Javascript 通过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

我已经找了一个星期了,我找不到这个问题的答案

我通过jsonp请求数据

$.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代码,并进行了回显。谢谢你的帮助