2012-08-03 77 views
1

因此,我有一个网站,允许用户输入链接,然后提取信息并将其放入列表中。为什么这个jquery脚本不工作?

现在一切都很好,直到昨天,当我的虚拟主机合作伙伴做了一些升级。我知道,MySQL & PHP已经升级,但我不知道还有什么。

首先,我遇到了无法登录数据库的问题(必须删除并重新创建用户)。 然后PHP序列化JSON的问题(需要更改代码)。 然后出现412无效的预处理错误(需要托管合作伙伴设置的特殊规则)。 现在,所有jQuery脚本的最后一个已停止工作。但我不知道为什么。它以前工作过,但也许这是运气(我没有这么经验)。

总之,什么情况是

  1. 用户输入的链接。
  2. jquery调用返回JSON的链接。
  3. 解析JSON并更新网页并显示结果。
  4. 用户点击保存并将数据输入到数据库中。

使用萤火虫和将警报放在我的JavaScript然后我可以看到,步骤1,步骤2工作正常。返回的JSON是有效的(我已经使用JSONlint进行了验证),但步骤3不起作用。我的脚本在下面;

function getURLData(form) 
{ 
    var listid = $('input#listid').val(); 
    var memberid = $('input#memberid').val(); 
    var link = $('input#link').val(); 
    var sendstr = "http://www.wishindex.com/ajax.php?link=\"" + link + "\"&listid=" + listid + "&memberid=" + memberid; 

alert(sendstr); 
     $.getJSON(sendstr,function(result) 
     { 
      alert('inside');   
      if(result['Itemname'] != "") 
      { 
       alert('inside2'); 
       $('#itemname').val(result['Itemname']); 
       $('#itemname').attr('readonly', 'true'); 
       $('#desc').val(result['Description']); 
       $('#category').val(result['Category']); 
       $('#category').attr('readonly', 'true'); 
       $('#price').val(result['Price']); 
       $('#price').attr('readonly', 'true'); 
       $('#choosepicture').attr('onclick', 'window.open(\'http://www.wishindex.com/picture.php?link=' + result['Link'] + '\')'); 
       if (result['PictureLink'] != "") 
       { 
        $('#picturelink').val(result['PictureLink']); 
        $('#picturelink').attr('readonly', 'true');     
       } 
       else 
        $('#choosepicture').removeAttr('disabled'); 

       $('#automatic').attr('value', 'true');  
       $('#currency').val(result['Currency']); 
       $('#currency').attr('readonly', 'true'); 
      } 
      else 
      {   
       $('#automatic').attr('value', 'false'); 
       $('#manual').html('Please enter details manually'); 
       $('#choosepicture').removeAttr('disabled'); 
       $('#choosepicture').attr('onclick', 'window.open(\'http://www.wishindex.com/picture.php?link=' + result['Link'] + '\')'); 
      } 
     }); 
} 

如果启用了警报,然后我看到一个叫做链接是正确的,JSON是有效的(通过萤火并手动调用链接),该警示(“内部”)&警报('inside2 ')被执行,所以它到达了这段代码,但我的html元素没有更新!

正如我所说,在升级之前它很好,但也许我做错了什么,所以任何帮助将不胜感激,因为我花了几个小时,并找不到问题。

我的JSON响应;

[{"ID":"","MemberID":"24","Listid":"41","Itemname":"LEGO Star Wars 9489: Endor Rebel Trooper and Imperial Trooper","Description":null,"NumberDesired":null,"NumberPurchased":null,"Category":{"0":"TOYS_AND_GAMES"},"Link":"\"http:\/\/www.amazon.co.uk\/LEGO-Star-Wars-9489-Imperial\/dp\/B005KISGAI\/ref=pd_rhf_gw_shvl1\"","PictureLink":{"0":"http:\/\/ecx.images-amazon.com\/images\/I\/51fQnt%2BlppL._SL160_.jpg"},"Price":"9.89","Currency":"\u00a3","Priority":null,"SuggestedPurchaser":null,"ActualPurchaser":null,"PurchaseStatus":null,"Productid":"B005KISGAI","Site":"amazon.co.uk","DateAdded":null,"DatePurchased":null,"Domain":null,"Temp":["LEGO-Star-Wars-9489-Imperial","dp","B005KISGAI","ref=pd_rhf_gw_shvl1\""],"Error":"","Warning":null}] 

您可以致电此获得JSON结果例子

http://www.wishindex.com/ajax.php?link=%22http://www.amazon.co.uk/LEGO-Star-Wars-9489-Imperial/dp/B005KISGAI/ref=pd_rhf_gw_shvl1%22&listid=41&memberid=24

一个工作演示(的要求)可以在这里找到; http://www.wishindex.com/test_newitem.php?listid=41

要测试;

  1. 从amazon.co.uk如 http://www.amazon.co.uk/LEGO-Star-Wars-9489-Imperial/dp/B005KISGAI/ref=pd_rhf_gw_shvl1 输入商品链接到链接字段
  2. 点击获取细节和其余字段应自动填充 ,而T3嘿嘿不是。
+0

可以告诉你它的JSON或部分? – Andy 2012-08-03 08:05:23

+0

我认为你应该发布一个现场演示。您的托管合作伙伴已完成更新。好。但如果Ajax调用的json结果是好的,那么服务器端就没问题。如果客户昨天工作,那么客户就可以。所以......至少有一个你的假设是错误的:) – 2012-08-03 08:07:47

回答

1

你的json是一个数组内的对象。所以你应该只能访问这样的数据:result[0]['Itemname']或做result = result[0],然后再访问它。

所以它达到“inside2”,因为result['Itemname']undefined这是!= ""

+0

这实际上是问题所在。 JSON不应该是一个数组,并且事实证明,我为解决PHP问题(在ajax.php中)所做的更改是在它不应该返回数组时返回的。现在我改变了它,然后它返回一个无数组,并且字段被更新。我仍然有一些格式问题需要解决,但可以轻松排序。谢谢。 – 2012-08-03 08:30:24

+0

@ jason.kaisersmith很高兴我能帮到你! – Andy 2012-08-03 08:36:45