在语法错误上调用ajaxError

时间:2014-10-01 11:15:26

标签: javascript jquery ajax

我在客户端设置了ajax错误处理程序

 $(document).ajaxError(processAjaxError);
 $.getJSON('/data.json');

在服务器端

def get(self):
    self.response.headers['Content-Type'] = 'application/json'
    self.response.write('Hello, World!')

即使我有200个状态代码,仍然会调用ajaxError回调,因为响应数据不是json。但是在processAjaxError回调参数中,我如何获得确切的错误消息?

1 个答案:

答案 0 :(得分:0)

ajaxerror函数应按此顺序接收参数:

 event, jqxhr, settings, thrownError

此处有更多信息:http://api.jquery.com/ajaxerror/

文档中的完整示例:

$( document ).ajaxError(function( event, jqxhr, settings, thrownError ) {
  if ( settings.url == "ajax/missing.html" ) {
    $( "div.log" ).text( "Triggered ajaxError handler." );
    // Do whatever you want with thrownError here
  }
});

如果您正在尝试找出为什么抛出404(如果它是无效的json或其他原因),您可以尝试解析您返回的数据的responseText排除这种可能性。

try {
    $.parseJSON(responseText);
} catch(err) {
    // Failed the json test
}