如何基于服务器响应而不是HTTP 500触发jquery.ajax()错误回调?

通过使用jquery ajax" title="jquery ajax">jquery ajax函数,我可以执行以下操作:

$.ajax({

url: url,

type: 'GET',

async: true,

dataType: 'json',

data: data,

success: function(data) {

//Handle server response here

},

error: function(xhr, status, error){

//Handle failure here

}

});

根据以上代码,我有两个问题要问:

  1. 何时error调用jquery.ajax()回调???

  2. 如果服务器响应给我一个带有字符串消息“ 存在错误 ” 的json对象,该怎么办。这意味着请求仍然成功发送,但是我得到了服务器响应{message: "There is an error"}

我认为无论响应哪个字符串值服务器,如果客户端得到服务器的响应,无论如何都会触发jquery.ajax() success回调。

我想问一下服务器是否专门向我返回了一个字符串类型为的JSON对象{message: 'There is an error'},服务器是否可以做一些事情,以便可以在jquery.ajax() error回调而不是success回调中处理此响应?

回答:

当服务器的响应与你的期望不符时,将执行错误回调。因此,例如在这种情况下:

  • 收到HTTP 404/500或任何其他HTTP错误消息
  • 收到了错误类型的数据(即,你期望使用JSON,但还收到了其他信息)。

    在你的情况下,数据是正确的(这是JSON消息)。如果要基于接收到的数据的值手动触发错误回调,则可以非常简单地进行。只需将匿名回调更改为命名函数即可。

function handleError(xhr, status, error){

//Handle failure here

}

$.ajax({

url: url,

type: 'GET',

async: true,

dataType: 'json',

data: data,

success: function(data) {

if (whatever) {

handleError(xhr, status, ''); // manually trigger callback

}

//Handle server response here

},

error: handleError

});

以上是 如何基于服务器响应而不是HTTP 500触发jquery.ajax()错误回调? 的全部内容, 来源链接: utcz.com/qa/413868.html

回到顶部