关于JQuery、ajaxReturn、JSon的学习
今天学习用JQuery做一个用户登录的例子,在网站上看了许多学习资料,比如?tid=3312&extra=page%3D1。
我按他的做法做了一遍以后,出现了许多问题:
第一,ajaxReturn传递中文的时候,无法传递过去。ajaxReturn(“”,“中文”,0);而在页面的显示格式始终是
{“data”:“”,info:null,status:0}
而当info是英文时则可以顺利的传递过去。第二,就是
$.ajax({
type:"post",
url:"__URL__/checkLogin/",
data:'account='+account+'&password='+password+'&verify='+verify ,
dataType:"json",
success:function(msg){
if(msg.status==0)
{
$("#result").html(msg.info).css("color","red");
}else
{
window.location = '__APP__';
}
}
});
经过了我半天的研究终于有了点眉目:
关于第一个问题,无法传输中文,是由于你的编码格式不是utf8,所以你把你代码文件的编码格式改为utf8就对了。
关于第二个问题,涉及到了json的传值方式,
key = {'id':'1','name':'csdn'};
alert(json.id);
alert(json.name);
这是对的
但是如果是传过来的,那么必须eval一下才可以
因为定义的时候写了{}就代表json对象,传过来是一个字符串,虽然也有{}但只是字符并没有构建json对象
所以必须eval一下
昵称: TPZengniao 时间: 2009-10-01 20:58:00
dataType:"json"还需要msg = eval("(" + msg + ")")?
你不觉得有问题?
昵称: kaka 时间: 2009-10-02 11:50:00
kaka
恩,我也觉得很奇怪,不过你可以试下!!
这是我在实践中出现的问题
昵称: TPZengniao 时间: 2009-10-02 14:25:00
这个不用试,肯定没问题的,随手写一个简单的
昵称: kaka 时间: 2009-10-02 15:12:00
kaka
那又有什么意义呢?
昵称: TPZengniao 时间: 2009-10-04 13:01:00
理解相当不错,还不够深入呀
昵称: peroer 时间: 2009-11-23 14:55:00
我也发现了,必须要 json = eval("(" + key + ")")
一相,要不所有的返回都是undefined
但使用JQUER的 $.getJSON
就没问题!
昵称: 9254778 时间: 2010-05-11 14:27:00
在这个例子中,msg包含了3部分信息($this->ajaxReturn('1','2',0);)
msg.data:就是前面一个变量;
msg.info:就是第二个提示信息;
msg.status:就是状态;
后面两个直接引用就可以,不存在楼主所说的json传值方式。
而对于第一个传回的变量,实际是传回的一个对象,那么要取得里面的值,例如account,那就:
msg.data.account
而不用去eval的。。
个人理解,不对之处请指点。。
昵称: hbolive 时间: 2010-05-23 18:16:00
我也是需要 eval("(" + key + ")") 的加个括号 ,不知道为什么 。不然报错
昵称: liujun99 时间: 2010-06-09 11:02:00
只要保证返回的是正确的json串就可以了!
昵称: Messi 时间: 2010-06-09 13:11:00
看一下你的TP ajax配置,默认应该就是json返回,不需要eval的。。。
昵称: hbolive 时间: 2010-06-09 16:12:00
我也遇到过楼主的情况,不过后来重新写一次又可以直接用了。
昵称: gzrhappy 时间: 2010-06-09 18:08:00