Javascript JQuery解析JSON
我对JQuery相当陌生。下面的代码可以工作,我可以在Firebug中看到正确的JSON响应。但是我找不到一种方法,如何在代码中获取和解析它。警报窗口仅显示 “[object]”但不是任何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
<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()
来查看对象的内容,至少您可以看到您在控制台中收到的答案是否正确。你可能想看看