gpt4 book ai didi

javascript - 如何让jQuery ajax执行错误函数

转载 作者:可可西里 更新时间:2023-11-01 00:43:02 24 4
gpt4 key购买 nike

我环顾四周并按照 this post 上的说明进行操作但我仍然无法执行 error 函数。我想要做的是让我的 PHP 脚本返回 errorsuccess 以及一条消息。最终将从数据库返回的数据将被放入 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 并解析响应并保留意外错误的错误处理程序要容易得多

关于javascript - 如何让jQuery ajax执行错误函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28834315/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com