看来您需要使用fnServerData回调。我自己从未使用过它,但您似乎可以手动执行 ajax 请求并捕获您想要的任何服务器端错误。
在你的情况下,它会是这样的:
$(document).ready( function() {
try {
$('#example').dataTable( {
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": "xhr.php",
"fnServerData": function ( sSource, aoData, fnCallback, oSettings ) {
oSettings.jqXHR = $.ajax( {
"dataType": 'json',
"type": "POST",
"url": sSource,
"data": aoData,
"success": function(response) {
//do error checking here, maybe "throw new Error('Some error')" based on data;
fnCallback(arguments);
},
"error": function() { //404 errors and the like wil fall here
//"throw new Error('Some error')"
}
} );
}
} );
} catch (e) {
console.error(e);
}
} );
同样,我以前从未使用过该回调,但从参考资料来看,它似乎是正确的方法。
好吧,这就是如何在客户端捕获错误的部分。至于在出现错误时发送什么,这取决于您的语言和框架。如果你的项目很重要,并且你做了很多这样的 ajax 请求,我建议你构建一个REST API 来获取你的数据。
或者您可以在服务器端捕获错误并返回如下 json:
{
returnStatus: "error",
message: "message"
}
当请求成功时,只需返回如下内容:
{
returnStatus: "success",
data: [...]
}
只需检查 ajax“成功”回调的 returnStatus 即可。