我必须在我的应用中阅读并显示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>
答案 0 :(得分:0)
php输出需要将数组包装在回调函数中,如下所述: https://stackoverflow.com/a/6809069/117314
在输出中写道:
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