JSONP显示为null

时间:2013-12-20 23:19:07

标签: jquery jsonp

我必须在我的应用中阅读并显示json格式的结果。由于相同的原始策略,我被迫在客户端使用JSONP。但它显示为空

请让我知道我哪里出错了,它显示为空。任何帮助表示赞赏

服务器端的PHP代码

while ($r = mysql_fetch_assoc($result))
{
    $rows[] = $r;
}
echo json_encode($rows);

我从上面的PHP代码

收到的JSON输出
[
    {
        "a_name": "affles",
        "bname": "bua",
        "c_number": "10101010",
        "dateandtime": "2013-11-30 17:50:04"
    },
    {
        "a_name": "affles",
        "bname": "bua",
        "c_number": "10101010",
        "dateandtime": "2013-11-30 17:50:04"
    },
    {
        "a_name": "anan",
        "bname": "nesh",
        "c_number": "2017439441",
        "dateandtime": "2013-12-04 17:50:04"
    }
]

使用JSONP但仍返回null的客户端代码。由于相同的原始策略而使用JSONP

<script>
(function() {
  var flickerAPI = "http://apip.com/results.php?jsoncallback=?";
  $.getJSON( flickerAPI, 
    (function( data ) {
      $.each( data.items, function( index, value ) {

$('<li>' + value.a_name + '</li>').appendTo('#groups');

      });
    });
})();
</script>

1 个答案:

答案 0 :(得分:0)

php输出需要将数组包装在回调函数中,如下所述: https://stackoverflow.com/a/6809069/117314

致电http://www.write-about-property.com/jsonp.php?callback=jQuery16206784670623019338_1387584503108&firstname=Jeff&_=1387584503108

在输出中写道:

jQuery16206784670623019338_1387584503108({'fullname' : 'Jeff Hansen'})

输出需要获取jsoncallback查询参数值(如果没有提供,则只需“jsoncallback”),如:

jsoncallback([
    {
        "a_name": "affles",
        "bname": "bua",
        "c_number": "10101010",
        "dateandtime": "2013-11-30 17:50:04"
    },
    {
        "a_name": "affles",
        "bname": "bua",
        "c_number": "10101010",
        "dateandtime": "2013-11-30 17:50:04"
    },
    {
        "a_name": "anan",
        "bname": "nesh",
        "c_number": "2017439441",
        "dateandtime": "2013-12-04 17:50:04"
    }
]);

我个人更喜欢在调用函数之前添加一个简单的测试:

if(jsoncallback) jsoncallback([,,,]);

编辑:

关于如何使用JSONP的另一个很好的解释: https://stackoverflow.com/a/2067584/117314