9

我正在尝试获取一个托管在此处的本地服务器中的 JSON,但由于某种原因它不起作用。如果我在浏览器上点击我的 url,它会正确返回 Json,如果我使用另一个 URL,我会得到一些数据。

我原来的 getJson 方法:

获取JSON:

$.getJSON(url, 

                    function(data) {
                        console.log('got something'); 
                        alert(data);    

                    });

现在我想看看到底出了什么问题。我已经将它重写为 Ajax 请求,并且在我的错误回调中 jqxhr 给了我很多我不明白的东西。我可以获得有关此错误的更多详细信息吗?

TextStatus值为"error"

errorThrownnull

    $.ajax({
                  url: url,
                  dataType: 'json',
                  success:  function(data) {
                        console.log('got something'); 
                        alert(data);    
                        },
                error: function(jqxhr,textStatus,errorThrown)
                    {
                        console.log(jqxhr);
                            console.log(textStatus);
                            console.log(errorThrown);                               

                            for (key in jqxhr)
                                alert(key + ":" + jqxhr[key])                                                                 
                            for (key2 in textStatus)
                                alert(key + ":" + textStatus[key])
                            for (key3 in errorThrown)
                                alert(key + ":" + errorThrown[key])

                   //<--- All those logs/alerts, don't say anything helpful, how can I understand what error is going on? ---->

                }});

最后,我应该返回的 json 是

[{"message": "login failed"}]

而且我不能使用 firebug、chrome 控制台或任何其他开发工具,因为这是一个使用 Phonegap 开发的移动应用程序!

4

2 回答 2

7

我会将我的评论放入答案表单中,它不是解决您的问题的方法,而是解决 jQuery Ajax 的各种返回问题的好方法。

在这种情况下,当您请求某种数据类型时,dataType: 'json'您正在请求一种特定类型的数据。如果未返回该特定数据类型,它将传递给错误函数。

如果您的错误消息未提供可以解释您的问题的信息,请尝试请求更友好的数据类型。这样您就可以看到您的请求实际返回的内容。如果它的数据不是您请求的数据类型,那么这就是您的问题,您可以从那里解决。

dataType like htmlortext将非常开放,为您提供从请求的 url 返回的确切数据,您可以从那里解决您的问题。

希望它有一点帮助。

于 2012-12-06T12:31:52.783 回答
1

jqxhr - XrayWrapper
textStatus - 表示 Https 响应状态(例如成功、错误)的文本表示
errorThrown - XMLHttpRequest

jqxhr.status - 给出 200、404、500 等 Http 响应代码。

使用此代码段打印 json 对象中的所有键

var output = '';
for (property in object) {
  output += property + ': ' + object[property]+'; ';
}
console.log(output);
于 2012-12-06T12:25:25.663 回答