0

我对 JQuery 相当陌生。下面的代码有效,我可以在 Firebug 中看到正确的 JSON 响应。但我找不到如何在代码中获取和解析它的方法。警报窗口仅显示“[object 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>
4

5 回答 5

3

你精确的事实

dataType: 'json',    

告诉 jQuery 解析收到的答案并将其作为 javascript 对象提供给您的成功回调。

因此,您在这里所拥有的一切都很好,并且警告的内容是正确的(这是一个对象,因此 alert只是打印 的结果data.toString())。

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

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

并在 Chrome 中打开开发人员工具在 Firebug 中打开控制台以浏览对象的属性。

于 2013-01-07T15:58:02.497 回答
3

不要alert()用于调试——它通常是无用的(在这种情况下),并且在与异步代码(即任何 Ajax)一起使用时也会出现严重问题,因为它会中断程序流。

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

所以而不是alert(myjsonvar)使用console.log(myjsonvar).

于 2013-01-07T15:59:53.823 回答
1

alert函数希望您传入一个字符串或数字。

尝试做这样的事情:

for(x in data) {
    alert(x + ': ' + data[x]);
}

更新以响应评论:您可以在开发或生产中使用 alert 来查看服务器端代码返回的对象中的字符串和数字值。

但是,仔细阅读您的问题,看起来您真正想看到的是实际的 JSON 文本。查看上面@dystroy 的答案,我认为如果您dataType: 'json'从 $.ajax 调用中删除,jQuery 会将响应视为纯文本,而不是自动将其转换为对象。在这种情况下,您可以通过将文本传递给alert函数来查看文本。

于 2013-01-07T15:58:10.870 回答
1

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

var jsonstr = JSON.stringify(data);
alert(jsonstr);
于 2013-01-07T16:00:33.147 回答
0

尝试使用

data = JSON.parse(data)

然后对数据做任何你想做的事情。

来源:JSON.parse() (MDN)

于 2013-01-07T16:40:09.493 回答