解析JSON ajax变量

解析JSON ajax变量,ajax,json,parsing,Ajax,Json,Parsing,我喜欢将json数据转换为JS对象或将其分配给变量 $.ajaxSetup({ type: "POST", url: "_class/queries.php", dataType:"json" }); var obj; $.ajax({ data: querystring, success: function(data){ console.log(data); alert(data[0].vname); //obj = JSON.par

我喜欢将json数据转换为JS对象或将其分配给变量

$.ajaxSetup({
type: "POST",
url: "_class/queries.php",
dataType:"json"
});

var obj;    

$.ajax({
   data: querystring,
   success: function(data){

     console.log(data);

     alert(data[0].vname);

     //obj = JSON.parse(JSON.stringify(data));

     obj = data;

     console.log(obj[0].vname);//<-- prints the expected property 
   }

 });

console.log("return "+obj);//<-- undefined?
return obj;

}
$.ajaxSetup({
类型:“POST”,
url:“\u class/querys.php”,
数据类型:“json”
});
var-obj;
$.ajax({
数据:查询字符串,
成功:功能(数据){
控制台日志(数据);
警报(数据[0].vname);
//obj=JSON.parse(JSON.stringify(data));
obj=数据;

console.log(obj[0].vname);//变量
json
包含已解析的值-服务器返回的数据。 为什么您需要
eval
it

obj = data;
足够了。

将的type属性设置为
json

$.ajax({
    data: querystring,
    dataType: "jsonp",
    success: function(json) {
        console.log(json);
        alert(json[0].vname);
        obj = eval("(" + json + ")");
    }
});
从手册中:

“json”:将响应计算为json 并返回一个JavaScript对象 jQuery 1.4 JSON数据在 严格的方式;任何格式错误的JSON都是 拒绝,并引发分析错误。 (请参见json.org了解更多关于 正确的JSON格式。)

eval()


此外,AJAX调用是异步的-这意味着AJAX请求是按照通常程序执行的顺序发出的。在代码中,这意味着at
return obj;
变量的值与AJAX调用从服务器返回数据并分配
eval()的返回值后的值不同
调用
obj
。解决方案是——在您的情况下,让success函数调用您希望发生的下一个“事件”,或者使用AJAX函数填充另一个事件轮询的变量(最好是全局范围内的变量)(使用计时事件,例如).

请向我们展示JSON数据。此外,ajax是异步的,因此,如果
返回obj
,它可能还没有设置。您的JSON有效吗?$。如果有效,parseJSON将起作用。Id避免由于性能问题而进行评估。@locrizak它应该有效吗?[{“Id”:“21”,“vname”:“sad”,“name”:“Höbert”,“adrese”:“sdfdsf”,“plz”:“34534”,“ort”:“dfgdsfg”,“email”:“sdfgsdfg”}]thx,也许这就解释了为什么success函数中的所有东西都能很好地工作,即使obj=data;也能工作!但是我如何返回obj?您必须使用基于事件的编程,请参见上面的最后一段。一个解决方案是将async:false作为$.ajax()的参数–thx的提示:)