纠结了一上午的问题。。。。。把网上的东西整理一下。
asp.net 使用jquery ajax异步加载json数据有两种实现方式,
var obj = {
name:"战士",
age:"100"
}
一、dataType为"text",使用eval解析成json
$.ajax({
type: "post",
url: url,//返回json数据的地址
dataType: "text",
success: function (msg) {
var d = eval("(" + msg + ")");
alert(d.name);//返回值 战士
}
})
二、dataType为json
$.ajax({
type: "post",
url: url,//返回json数据的地址
dataType: "json",
success: function (msg) {
alert(msg.name);//返回值 战士
}
})
对于第二种方式返回的json数据格式必须为
var obj = {
“name”:"战士",
"age":"100"
}
json格式的数据都必须加引号这个引号才是我真正纠结一上午的问题。
同样这种格式的json也适用于第一种方式,所以建议大家以后写json数据时,养成加"引号"的习惯吧。
对于为什么必须加引号网上有这样一段话,也不清楚是不是真的。
不加引号的写法在js脚本和jquery 1.4之前的版本都是没有问题的。因为在1.3及更早版本中,jQuery通过javascript的eval方法来解析json对象。在1.4中,jQuery使用了更严格的方法来解析json。所有的内容都必须使用双引号。
我没具体看jquery代码,所以不清楚是否正确。
备注:
服务器返回json数据时
Response.ContentType = "text/plain";
这句代码不指定同样可以成功加载json数据,json数据可看成txt文本文件。