php的ajax返回值的问题

php页面test.php$c=array('a'=>1);echojson_encode($c);html页面$.ajax({type:"post",async:fal... php页面test.php
$c = array('a'=>1);
echo json_encode($c);

html页面

$.ajax({
type : "post",
async : false,
url : 'test.php',
dataType : "json",
data : {username : 'll'},
success : function(result){
if(result)
{
var json = evel('('+result+')');
alert(result.a);

}
}
})

ajax异步,下面alert报错.如果把if这段删除,单独alert(result),显示object xmldoucment对象.在此基础上如果删除typedate,他就跳过了alert.请问这是为什么?麻烦一一解答,非常感谢.
var url = './test.php'
$.ajax({
type : "post",
async : false,
url : url,
dataType : "json",
data : {username : 'fyl'},
success : function(result){
if(result)
{
var json = eval('('+result+')');
alert(json.a);
}
}
})alert报错了.我设置的是同步,如果是异步他就走不到alert那里。直接跳过了。不知道是为什么
展开
 我来答
cmoooo
2013-06-08 · TA获得超过3587个赞
知道小有建树答主
回答量:741
采纳率:0%
帮助的人:652万
展开全部
你alert的是什么?

那个result是人家返回来的字串,当然不行。

你应该alert(json.a);

另外,如果还是不行,你就在eval之前,alert(result); 看看返回的是不是你要的 {"a":1}字符串

如果还有其它的,eval会出错。

另外尽量少用eval,这样的Json返回值,尽量用 JSON.parse()来搞定,这样的话,你的程序安全性好。
更多追问追答
追问
请看题目上的追加内容

1,'b'=>2,'c'=>3,'d'=>4);
echo json_encode($c);
?>
追答
这个应该是没关系的,另外jquery我不是太懂,我最熟悉的是原生JS,所以刚刚的回答可能有些不合理的地方。

我刚才去了解了一下Jquery的dataType : "json"这个用法,发现jquery对输出格式要求十分严格,必须是双引号名+冒号+双引号值的结构。

这样的话,你的数组里面就不要让它有数字了,而是让它成为字符串:

$c = array('a'=>'1','b'=>'2','c'=>'3','d'=>'4');

这样你明白我的意思了没有,否则的话,jquery会认为你传来的json格式有误,而运行error,而不运行success。

你在你的程序里加上一个error看看是不是这样:

$.ajax({
type : "post",
async : false,
url : 'test.php',
dataType : "json",
data : {username : 'll'},
success : function(result){
if(result)
{
//另外就是这里,如果是传来的值正确,这里的result好像已经是被解析过的json,所以好像不用再eval了!
var json = evel('('+result+')');
alert(result.a);

}
},
error:function(){
alert('错了!');
}
})
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式