为什么这个jquery脚本不起作用?

时间:2012-08-03 07:51:04

标签: php javascript jquery

所以我有一个允许用户输入链接的网站,然后它会提取信息并将其放入列表中。

现在一切正常,直到昨天我的网络托管合作伙伴完成了一些升级。我知道mysql& php一直在升级,但我不确定还有什么。

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

无论如何,会发生什么

  1. 用户输入链接。
  2. jquery调用返回JSON的链接。
  3. 解析JSON,并使用结果更新网页。
  4. 用户点击保存,数据输入数据库。
  5. 使用firebug并在我的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是有效的(通过firebug并手动调用链接)和警报('inside')& alert('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. 点击获取详细信息,其他字段应填充 自动,但不是。

1 个答案:

答案 0 :(得分:1)

你的json是数组中的一个对象。因此,在访问之前,您应该只能访问result[0]['Itemname']result = result[0]之类的数据。

因此result['Itemname']undefined != ""