Ajax调用错误处理功能或if-else语句

问题描述:

我想知道是否有必要使用AJAX调用错误在下文提到的例子处理函数,如果我已经用“的if-else”声明:Ajax调用错误处理功能或if-else语句

我型号:

if ($query && $query->num_rows() > 0) { 

     return $query->result(); 
    } else { 
     return false; 
    }  

我的控制器:

if ($this->model_users->did_get_data($user_id)) { 

      $data["results"]= $this->model_users->did_get_data($user_id);   
      echo json_encode($data);    
     } 
     else {  
     $data = array(
        'message' => "Could not find any posts." 
        ); 
      echo json_encode($data); 

     } 

我的JS文件:

$.get('controller/get_data', function (data) { 
     if (data.message !== undefined) { 
      $("#data_is_not_got").text(data.message); 
     } else { 

      //displaying posts    

     } 
    }, "json"); 
+1

必要的,没有,但它不是一个坏主意,在事件的一些网络或服务器错误反正用它发生。 – 2014-09-04 17:37:45

是的,你还是应该添加一个错误处理程序AJAX调用。这将让你优雅地处理任何数量的潜在问题,可能与你的if/else语句不包括通话发生 - 无法连接到服务器,内部服务器错误等

+0

好的,非常感谢。几分钟后就能接受。 – EducateYourself 2014-09-04 17:41:28

这取决于什么都可以发生在你的控制器上。

如果你有绝对的把握不可能有任何404错误或不会有任何超时错误,你可以没有错误处理功能工作。但是因为我确定你不能说100%肯定,所以我会说你必须实现它)

但是,这里是我的提示:如果你多次使用AJAX调用,创建你自己的“AJAX API”,它仅使用一个回调,您可以使用一个状态参数告诉回调是否一切正常与否,所以实际上你只需要使用一个if-else语句。

这是我的方法来处理一个PHP后端一个简单的例子:

ajax = function (callback) { 
    $.ajax({ 
     // whatever you need here 
     success: function (response) { 
      if (typeof callback == "function") { 
       callback(true, response); 
      } 
     }, 
     error: function (e) { 
      if (typeof callback == "function") { 
       if (e.statusText == "timeout") { 
        callback(false, {"timeout": true}) 
       } else { 
        try { 
         JSON.parse(e.responseText) 

         // if try is successfull, there is no fatal-error (which would exit the PHP, so no JSON) 
         callback(false, {}) 
        } catch (x) { 
         // only maximum-execution-time-errors are fatal errors :P 
         if (e.responseText.indexOf('<b>Fatal error</b>') != -1) { 
          callback(false, {"timeout": true}) 
         } 
        } 
       } 
      } 
     }, 
    }) 
}