我如何弄清楚JQuery ajax请求失败的原因

时间:2014-04-10 21:40:28

标签: jquery ajax

我有一个失败的ajax请求应该是好的。并且没有关于原因的信息。我的代码是:

$.getJSON( "http://localhost:62178/document?filename=c:/test/dave.docx", function( data ) {
    console.log("read = " + data);
}).done(function(e) {
    console.log( "second success" );
})
    .fail(function(e) {
        console.log( "error" );
    })
    .always(function(e) {
        console.log( "complete" );
    });

根据fiddler的说法,REST查询返回200,返回的正文是我预期的JSON。它调用fail(e),对象e是一堆函数,只有3个属性是: readyState:0 responseText:"" statusText:"错误"

生成的JSON由ASP.NET Web API 2创建,因此我非常有信心它是有效的。它看起来确实有效。它的形式为:

{
success: true,
document: {
...
  }
}

我如何弄清楚JQuery不满意的是什么?

更新:我发现了问题(跨域请求)。但我原来的问题仍然存在,如何从fail()函数中传递的变量中找出ajax请求失败的原因?

2 个答案:

答案 0 :(得分:0)

你可以在getJSON调用之后使用.fail函数(就像你已经拥有它一样)并输出如下参数:

.fail(function(jqXHR, textStatus){ //ERROR
    console.log('FAILURE: ' + textStatus);
    console.log(jqXHR);
});

现在查看控制台,你可以看到textStatus,你会看到jqXHR对象。此对象包含可能有用的其他信息。让我知道这是否有效或有什么不清楚!谢谢!

答案 1 :(得分:-1)

尝试在失败中执行此操作。

.fail(function(xhr){
  Response.Write
  alert(xhr.responseText);
  }