Javascript JQuery解析JSON

Javascript JQuery解析JSON,javascript,jquery,Javascript,Jquery,我对JQuery相当陌生。下面的代码可以工作,我可以在Firebug中看到正确的JSON响应。但是我找不到一种方法,如何在代码中获取和解析它。警报窗口仅显示 “[object]”但不是任何json文本 <script> $.ajaxSetup({ cache: false }); var _token; function make_token_auth(user, token) { var tok = user + ':' + token; return "Token

我对JQuery相当陌生。下面的代码可以工作,我可以在Firebug中看到正确的JSON响应。但是我找不到一种方法,如何在代码中获取和解析它。警报窗口仅显示 “[object]”但不是任何json文本

<script>

$.ajaxSetup({ cache: false });

var _token;

function make_token_auth(user, token) {
  var tok = user + ':' + token;
  return "Token " + tok;
}


$.ajax
  ({
    type: "GET",
    url: "url",
    dataType: 'json',    
    beforeSend: function (xhr){ 
        xhr.setRequestHeader('Auth', make_token_auth('userid', 'token')); 
    },
    success: function (data){
        alert(data); 
    }
});

</script>

$.ajaxSetup({cache:false});
var_代币;
函数make_token_auth(用户,令牌){
var-tok=用户+':'+令牌;
返回“令牌”+tok;
}
$.ajax
({
键入:“获取”,
url:“url”,
数据类型:“json”,
beforeSend:function(xhr){
setRequestHeader('Auth',make_token_Auth('userid','token'));
},
成功:功能(数据){
警报(数据);
}
});
你所说的事实

dataType: 'json',    
告诉jQuery解析接收到的答案,并将其作为javascript对象提供给成功回调

因此,这里的内容很好,并且发出的警报是正确的(这是一个对象,所以 只需打印
data.toString()
)的结果即可

使用
console.log
查看它到底是什么:

success: function (data){
    console.log(data); 
}

然后打开或以浏览对象的属性。

函数要求您输入字符串或数字

尝试这样做:

for(x in data) {
    alert(x + ': ' + data[x]);
}
根据注释更新:您可以在开发或生产中使用alert查看服务器端代码返回的对象中的字符串和数字值

但是,仔细阅读您的问题,您真正想要看到的似乎是实际的JSON文本。看看上面@dystroy的回答,我认为如果从$.ajax调用中删除
数据类型:“json”
,jQuery将把响应作为纯文本处理,而不是自动将其转换为对象。在这种情况下,您可以通过将文本传递给
alert
函数来查看文本。

不要使用
alert()
进行调试——它通常没有任何帮助(如本例),并且在与异步代码(即任何Ajax)一起使用时也会出现严重问题,因为它会中断程序流

您最好使用浏览器的
console.log()
console.dir()
函数,并查看控制台中显示的对象。它的功能更加强大,并且不会中断程序的流程


因此,不要使用
alert(myjsonvar)
而使用
console.log(myjsonvar)

您可以使用
json.stringify
获取json字符串

var jsonstr = JSON.stringify(data);
alert(jsonstr);
试用

data = JSON.parse(data)
然后对数据做任何你想做的事情


来源:(MDN)

console.log(数据)如何?在一个好的浏览器(不是IE)中,使用
console.log(data)
而不是
alert()
,您将在控制台中看到数据对象的属性完全逐项列出。@dystroy,根据我的经验,当转换为字符串时,通用对象变成
[object object]
。你知道改变这种行为的方法吗?你不是真的错了。我指出的是,
alert
并不“期望”特别是“字符串或数字”。与[object]相比,用户更希望看到可读性更强的东西。数字也没有什么特别之处。@Daniel Allen Langdon这一个有效,我可以在警报窗口中看到,这是一个测试代码,还是我可以在生产中使用它将jsonvalues设置为“x”,在哪里可以看到控制台输出?@spring-in Firebug。看到firebug窗口顶部的“控制台”选项卡了吗?他已经指定他正在使用firebug,所以不知道为什么要链接到Chrome开发者工具?我得到了SyntaxError:JSON.parse:unexpected character,因为如果你检查我的代码,你会看到它返回object,但你的函数解析stringsOh,我的错。尝试使用
console.dir()
而不是
console.log()
alert()
来查看对象的内容,至少您可以看到您在控制台中收到的答案是否正确。你可能想看看