jquery的ajax处理php返回数组的问题,高手们帮帮忙啊!!!
前台:zz="zid="+id;jQuery.ajax({type:"get",url:"manage/tz_left.php",data:zz,dataType:"js...
前台:
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 新手 展开
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);
});
}
=========================
$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);
});
}
展开全部
是foreach循环内的写法不对,你上面的写法只能定义常量
foreach($group_rs as $i=>$rs)
{
$ary[$i] = new array(
"id" => $rs['id'],
"name" => $rs['name'],
"nodepath" => $rs['nodepath']
);
}
foreach($group_rs as $i=>$rs)
{
$ary[$i] = new array(
"id" => $rs['id'],
"name" => $rs['name'],
"nodepath" => $rs['nodepath']
);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先后台运行php看输出的是否是一组json数据。如果是。那jquery中就不用eval了。直接调用就可以。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
后台返回值应该是{参数1:值1,'参数2':'值2'}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
接收到值的 用上面的赋值 就不对了 请问是哪里出错了??刚学
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询