通过使用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

 }

});

根据以上代码,我有两个问题要问:
  • 什么时候调用jquery.ajax()error回调?
  • 如果服务器响应我一个带有字符串消息“存在错误”的json对象,该怎么办。这意味着请求仍然可以成功发送,但是我得到了服务器响应{message: "There is an error"}

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

    我想问一下服务器是否专门向我返回了带有{message: 'There is an error'}之类的字符串值的JSON对象,服务器是否可以执行某些操作,以便可以在 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
    });
    

    09-10 08:19
    查看更多