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");
答
是的,你还是应该添加一个错误处理程序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})
}
}
}
}
},
})
}
必要的,没有,但它不是一个坏主意,在事件的一些网络或服务器错误反正用它发生。 – 2014-09-04 17:37:45