如果我已经使用了“if-else”语句,我想知道是否有必要在下面提到的例子中使用ajax调用错误处理函数:
我的模特:
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");
答案 0 :(得分:1)
是的,你仍然应该为AJAX调用添加一个错误处理程序。这样,您就可以优雅地处理if / else语句未涵盖的调用可能发生的任何潜在问题 - 无法连接到服务器,内部服务器错误等。
答案 1 :(得分:1)
这取决于您的控制器会发生什么。
如果您完全确定不会有任何404错误或没有任何超时错误,您可以在没有错误处理功能的情况下工作。但是因为我确定你不能说它100%肯定,我会说你必须实现它;)
但这是我的提示:如果您不止一次使用AJAX调用,请创建自己的“AJAX API”,它只使用一个回调,您可以使用status参数告诉回调是否一切正常,所以在事实上你只需要使用一个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})
}
}
}
}
},
})
}