作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我环顾四周并按照 this post 上的说明进行操作但我仍然无法执行 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 并解析响应并保留意外错误的错误处理程序要容易得多
关于javascript - 如何让jQuery ajax执行错误函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28834315/
我是一名优秀的程序员,十分优秀!