如何调试ajax请求错误?

时间:2012-12-06 11:43:11

标签: javascript android jquery ajax cordova

我正在尝试获取一个JSON,在这里托管在本地服务器上,但由于某种原因它不起作用。如果我在浏览器上点击我的网址,它会正确返回Json,如果我使用其他网址,我会获得一些数据。

我原来的getJson方法:

getJson:

$.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开发的移动应用程序!

2 个答案:

答案 0 :(得分:6)

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

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

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

htmltext等数据类型将非常开放,可以为您提供从请求的网址返回的确切数据,您可以从那里解决问题。

希望它有所帮助。

答案 1 :(得分:1)

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

jqxhr.status - 提供Http响应代码,例如200,404,500等。

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

var output = '';
for (property in object) {
  output += property + ': ' + object[property]+'; ';
}
console.log(output);