Javascript 通过jsonp对象循环
我已经找了一个星期了,我找不到这个问题的答案 我通过jsonp请求数据Javascript 通过jsonp对象循环,javascript,php,jquery,ajax,json,Javascript,Php,Jquery,Ajax,Json,我已经找了一个星期了,我找不到这个问题的答案 我通过jsonp请求数据 $.ajax({ type:'GET', dataType: "jsonp", url: "http://www.domain.com/app/loadFeedsApp.php", sync: true, contentType: "application/json", dataType: 'jsonp', success: f
$.ajax({
type:'GET',
dataType: "jsonp",
url: "http://www.domain.com/app/loadFeedsApp.php",
sync: true,
contentType: "application/json",
dataType: 'jsonp',
success: function(data) {
console.log(data);
}
});
在我的服务器端,我发送了如下信息:
$jarr = array();
$af = 0;
while( $row = mysql_fetch_array($result) )
{
$html = array("Appfeed".$af."" => array(
"cnty" => stripcslashes($row['cnty']),
"feed" => stripslashes($row['feed']),
"feedId" => stripslashes($row['feedId']),
"nickname" => stripslashes($row['nickname']),
"state" => str_replace("\r\n",'', $row['state']),
"date" => date("d/m/y", strtotime($row['date'])))
);
array_push($jarr, $html);
$af++;
}
echo $_GET['callback'] . '(' . json_encode($jarr) . ');';
然后返回数据:
jQuery21007744578921701759_1395250905357({
"Appfeed0":
{
"cnty":"MEXICO",
"feed":"text",
"feedId":"201",
"nickname":"chaparra",
"state":"Tamaulipas",
"date":"27\/02\/14"
}
});
jQuery21007744578921701759_1395250905357({
"Appfeed1":
{
" cnty ":"MEXICO",
"feed":"text ",
"feedsId":"198",
"nickname":"estudiante",
" state ":"Tamaulipas",
"date":"26\/02\/14"
}
});
jQuery21007744578921701759_1395250905357({
"Appfeed2":
{
" cnty ":"MEXICO",
"feed":"text ",
"feedsId":"197",
"nickname":"el roger",
" state ":"Tamaulipas",
"date":"26\/02\/14"
}
});
但当我尝试在java脚本中循环时,它只显示最后一个提要(Appfeed2)。当我在console.log()中打印数据时也是如此。看起来好像也收到了最后一个提要
Object {Appfeed2: Object}
1. Appfeed2: Object
1. state: "Tamaulipas"
2. date: "26/02/14"
3. feed: "Ayer fui a sacar mi licencia, sin saber manejar, no hice fila y solo me costo 200 pesos mas. Creo que sere taxista "
4. feedId: "197"
5. nickname: "el roger"
6. cnty: "MEXICO"
7. __proto__: Object
2. __proto__: Object
有什么想法吗?我在考虑jsonp返回数据的方式,所以我尝试使用方括号,使用和w/o get回调,但失败了
非常感谢你的帮助 您需要确保在PHP代码中,只在循环完成后回显一次JSON(p)。您需要构建所需的阵列,然后在最后将其回显
$jarr = array();
$af = 0;
while( $row = mysql_fetch_array($result) )
{
$jarr["Appfeed".$af] = array(
"cnty" => stripcslashes($row['cnty']),
"feed" => stripslashes($row['feed']),
"feedId" => stripslashes($row['feedId']),
"nickname" => stripslashes($row['nickname']),
"state" => str_replace("\r\n",'', $row['state']),
"date" => date("d/m/y", strtotime($row['date'])))
);
$af++;
}
echo $_GET['callback'] . '(' . json_encode($jarr) . ');';
另外,您的AJAX调用有太多的选项:
$.ajax({
type:'GET',
dataType: "jsonp",
url: "http://www.domain.com/app/loadFeedsApp.php",
success: function(data) {
$.each(data, function(i, v){
console.log(i);
console.log(v);
});
}
});
您在PHP代码中多次调用了
echo
。使用JSON(P)响应无法做到这一点。您需要创建所需的数组,然后调用echo$\u GET['callback'](“.json_encode($data)。”)代码>在代码末尾一次。什么是sync:true,
?如果您的意思是async:false
jsonp请求不能同步。另外,contentType:“application/json”
在这里是不正确的。该选项设置请求主体的内容类型
,在这里没有意义。另外,为什么您有数据类型:“jsonp”,
两次?感谢您指出代码中的错误,我想我已经尝试了太多的东西,以至于我对我发布的内容失去了关注。我用我创建的数组更新php代码,并进行了回显。谢谢你的帮助