我想解析json,但不成功。任何人都可以检查我的代码

时间:2012-01-06 18:45:53

标签: javascript jquery

我创建了一个从数据库中打印出来的php页面

[{"sha_id":"2","sha_text":"This is 1st sha."},{"sha_id":"4","sha_text":"this is 2nd sha"}]

现在我想从这个中提取每个变量..经过谷歌搜索一段时间后我得到了这个

$(document).ready(function(){
    var output = $('#output');

    $.ajax({

        url: 'http://xxxx.com/android_sha/index.php',
        dataType: 'jsonp',
        jsonp: 'jsoncallback',
        timeout: 5000,
        success: function(data, status){
            $.each(data, function(i,item){
                var landmark = '<h1>'+item.sha_id+'</h1>'
                + item.sha_id+'</p>';

                output.append(landmark);
            });
        },
        error: function(){
            output.text('There was an error loading the data.');
                alert("error");         
        }
    });
});

但它总是警告我的错误。我可能在$.each(data, function(i,item){出错了,但无法弄清楚应该是什么样的正确格式。

2 个答案:

答案 0 :(得分:3)

如果触发警报(“错误”),则并不意味着$ .each函数失败,这意味着jQuery无法加载指定的url或者ajax请求存在其他问题。这会触发错误功能,该功能会警告错误消息。

检查请求是否正常运行,例如使用Chrome的开发人员工具查看网络流量。如果页面返回非200状态代码,那么成功函数不会触发。

答案 1 :(得分:0)

JSONP不是实际上 JSON。 JSONP是获取跨域数据的“黑客”。 JSONP实际上是JavaScript文件。

您需要在函数调用中包装JSON。在您的示例中,您正在发送jsoncallback回调,因此您需要将JSON包装在其值中。

$callback = $_GET['jsoncallback'];
while($row = mysql_fetch_assoc($result)){
  $records[] = $row;
}
echo $callback . '(' . json_encode($records) . ');';