在PHP脚本中如何正确处理成功/错误的方法? 我在脚本中有一个函数,它失败或成功。通常情况下,我会返回真或假。
但是如果我理解正确,Ajax成功函数并不关心我的脚本中的结果,它只关心它是否实际运行我的脚本。 换句话说,我不得不混淆地检查成功函数中的错误。
那么我应该如何处理PHP返回错误,如何在成功函数中检查它?我应该把PHP简单地“回声”为真“;”如果成功了?
$.ajax({
type: 'POST',
url: 'jquery-actions.php',
data: formData,
dataType: 'text',
encode: true,
error: function (response) {
console.log(response);
},
success: function (response) {
//How to find out whether or not PHP function worked?
}
答案 0 :(得分:1)
您的正确之处在于error
调用的$.ajax
处理程序仅在请求的响应代码不是200 OK
时执行。如果代码执行正确,但是您希望客户端处理错误,则可以返回指示响应状态的标志。假设您使用JSON,它可能看起来像这样:
{
success: true,
additionalData: 'foo bar'
}
然后,您可以在success
处理程序中检查该标志:
$.ajax({
type: 'POST',
url: 'jquery-actions.php',
data: formData,
dataType: 'text',
encode: true,
error: function (response) {
console.log(response);
},
success: function (response) {
if (response.success) {
console.log('it worked!');
} else {
console.log('there was a problem...');
console.log(response.additionalData);
}
}
或者您可以强制PHP返回500错误:
header("HTTP/1.1 500 Internal Server Error");
但是,您无法使用此方法发送其他数据,这意味着必须在客户端代码中保留错误消息。
答案 1 :(得分:1)
尝试
$.ajax({
type: 'POST',
url: 'jquery-actions.php',
data: formData,
dataType: 'text',
encode: true
})
.always(function(jqxhr, textStatus, errorThrown) {
// `success`
if (typeof jqxhr === "string"
&& textStatus !== "error"
&& jqxhr == "true") {
console.log(jqxhr)
}
// `error`
else if (jqxhr == "false"
|| typeof jqxhr === "object"
|| textStatus === "error") {
console.log(jqxhr, errorThrown)
}
})