今天在使用如下代码的时候,

   javascript代码
  1. $.get("/ajax", {"ran":Math.random(),"act":act,"id":id}, function(d) {  
  2.         alert(d.ret); 
  3.     },"json"); 

返回的数据是:{ret:0} ,发现无法直接把返回的数据转换为 json 对象,需要使用

var d = eval("("+data+")");  转换一下对象才可以。

经过检索相关资料得知:jQuery 1.4 up 对 json 的格式有着更严格的要求,所有的key和属性都要用双引号标注起来,否则会被当作是返回字符串处理。

所以把返回数据的格式改为:{"ret":"0"} 或者 {"ret":0} 后问题得到了解决。

另外,如果你不填写 dataType 参数为 json 的话,它将通过返回数据页面的 ContentType 来适配数据格式,而非按照返回的数据格式。如果 ajax 结果页面的 ContentType 为 text/html 的话,jQuery 一样返回 html 字符串,而无法转换为 json。要jQuery转换json必须使ajax结果页面的 ContentType 为:application/json

PS:ajax 请求加了一个随机数参数。如果不加随机参数,当你重复点击(参数一样)的时候,可能会导致没有响应请求。

相关链接:jQuery API 文档