如何让jQueryajax执行错误函数
How to get jQuery ajax to execute error function
我已经四处查看并遵循了这篇文章中的说明,但我仍然无法执行error
函数。我想做的是让我的PHP脚本返回error
或success
以及一条消息。最终,它将是从数据库返回的数据,该数据库将被放入div
中,但目前我只需要让错误处理工作起来。我希望这里有人能帮我解决这个问题。我在下面包含了我的代码。
这显然是我的AJAX请求。
function getProductInfo() {
if($("#serialNumber").val() != '') {
serialNumber = $("#serialNumber").serialize();
$.ajax({
type: "POST",
url: 'post.php',
data: serialNumber + "&getSerialNumber=" + 1,
dataType: 'json',
success: function(data, textStatus, jqXHR) {
console.log("SUCCESS");
},
error: function(jqXHR, textStatus, errorThrown) {
console.log("ERROR");
}
});
}
}
这是我的php函数,它将以JSON 的形式返回错误和消息
function getSerialNumber() {
$serial = $_POST['serial'];
$product = new Inventory;
if($product->GetSerial($serial)) {
$productInfo = $product->GetSerial($serial)->first();
echo '{"error": false, "message": "Successfully got serial number"}';
} else {
echo '{"error": true, "message": "failed to get serial number"}';
}
}
就目前的代码而言,无论它是否真的有错误,它都只会继续输出SUCCESS
。
您需要发送除200:之外的http状态代码
if($product->GetSerial($serial)) {
$productInfo = $product->GetSerial($serial)->first();
header('Content-Type: application/json', true, 200);
die(json_encode(["error"=> false, "message"=> "Successfully got serial number"]));
} else {
header('Content-Type: application/json', true, 400);
die(json_encode(["error"=> true, "message"=> "failed to get serial number"]));
}
此外,在发送json时,请相应地设置内容类型,不要尝试手动构建json字符串,而是使用内置的json_encode
函数,最好使用die()
或exit()
而不是echo
,以避免任何意外的额外输出
也就是说,尽管发送适当的状态代码似乎是个好主意,但您可能会发现,总是返回200并解析响应,并保留意外错误的错误处理程序
一个选项是在后端设置错误。另一个是在成功时注意您的逻辑错误的ajax方法。
success: function(data, textStatus, jqXHR) {
if ( data.error == 'false' )
console.log('success');
else
console.log('error');
},
因此,如果不更改后端,整个功能可能看起来像:
function getProductInfo() {
var result;
if($("#serialNumber").val() != '') {
serialNumber = $("#serialNumber").serialize();
$.ajax({
type: "POST",
url: 'post.php',
data: serialNumber + "&getSerialNumber=" + 1,
dataType: 'json',
success: function(data, textStatus, jqXHR) {
if ( data.error == 'false' )
{
console.log('success');
result = data.message;
}
else
{
console.log('error');
result = data.message;
}
},
error: function(jqXHR, textStatus, errorThrown) {
console.log("ERROR");
}
});
}
return result;
}
相关文章:
- XMLHttpRequest:需要使用ajax中的成功和错误函数
- Javascript 错误:函数预期
- 未捕获的引用错误:函数未使用 onchange 定义
- 如何让jQueryajax执行错误函数
- 未定义未捕获的引用错误函数
- $.ajax在跨域url上不返回错误函数
- jQuery.ajax+php5.3-始终执行错误函数
- javascript未捕获类型错误函数ajax
- 在 Promise 调用的错误函数回调后附加对象的用法是什么
- Ajax 请求在 HandleUnauthorizedRequest 之前命中错误函数
- 引用错误:“函数”未定义
- 黑莓 10 级联 ajax 调用从 javascript 总是执行错误函数
- Ajax 调用弹簧控制器回调错误函数
- 未定义未捕获的引用错误函数
- 主干.js - n捕获异常:语法错误:函数构造函数:无法编译函数
- 引用错误:函数未定义错误
- “未捕获的引用错误:(函数)未定义”与焦点事件
- JavaScript 未捕获的引用错误函数未定义 单击时
- 引用错误:函数未定义
- 类型错误: [函数名称] 不是函数,在猫鼬和节点.js中