jquery的ajax处理php返回数组的问题,高手们帮帮忙啊!!!

前台:
zz="zid="+id;
jQuery.ajax({
type:"get",
url:"manage/tz_left.php",
data:zz,
dataType:"json",
beforeSend: function(){
//
},
success:function(msg){
jQuery.each(eval(msg),function(idx,item){
alert(item.id);
alert(item.name);
alert(item.type);
});
} ,
complete: function(XMLHttpRequest, textStatus){
alert(XMLHttpRequest);
alert(textStatus);
}
});

后台:
$ary=array();
$group_rs=select_spell("article_widget_article_channel","*","site_id=$zd",'nodepath');

if(!empty($group_rs))
{
$i=0;
foreach($group_rs as $rs)
{
$ary[$i]["id"]=$rs['id'];
$ary[$i]["name"]=$rs['name'];
$ary[$i]["type"]=$rs['nodepath'];
$i++;
}
}

echo json_encode($ary);

如果后台 直接
$id=array();
$id[0]["id"]='1';
$id[0]["name"]='张三';
$id[0]["type"]='111111';
$id[1]["id"]='2';
$id[1]["name"]='hah';
$id[1]["type"]='2222';
echo json_encode($id);

是可以接收到值的 用上面的赋值 就不对了 请问是哪里出错了??刚学PHP 新手

你把请求的地址直接在浏览器下打开看看如下代码输出是否正常,如果正常注释掉两个echo即可,如果输出数据有误,则是select_spell返回数据有问题
=========================
$group_rs=select_spell("article_widget_article_channel","*","site_id=$zd",'nodepath');
echo "<pre>". var_export($group_rs,true) ."</pre>";
$ary=array();
if( is_array($group_rs) && $group_rs ){
foreach($group_rs as $rs){
$ary[] = array("id"=>$rs['id'], "name"=>$rs['name'],"type"=>$rs['nodepath']);
}
}
echo "<pre>". var_export($ary,true) ."</pre>";
exit( json_encode($ary) );
=========================
还有你的jquery写法也有问题,类型已经设置dataType:"json",则不能再次eval,修改为如下:
=========================
success:function(msg){
jQuery.each(msg, function(idx,item){
alert('id:'+ item.id +'\nname:'+ item.name +'\ntype:'+ item.type);
});
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-03-24
是foreach循环内的写法不对,你上面的写法只能定义常量
foreach($group_rs as $i=>$rs)
{
$ary[$i] = new array(
"id" => $rs['id'],
"name" => $rs['name'],
"nodepath" => $rs['nodepath']
);
}本回答被提问者采纳
第2个回答  2012-04-03
先后台运行php看输出的是否是一组json数据。如果是。那jquery中就不用eval了。直接调用就可以。
第3个回答  2012-03-28
后台返回值应该是{参数1:值1,'参数2':'值2'}
第4个回答  2012-03-26
接收到值的 用上面的赋值 就不对了 请问是哪里出错了??刚学
相似回答