Php ajax返回错误状态代码
我正在一个小网站上工作,在那里我正在进行一个ajax调用,以从表中删除一行。我想做的是让php返回一个状态代码来触发ajax请求中的Php ajax返回错误状态代码,php,mysql,Php,Mysql,我正在一个小网站上工作,在那里我正在进行一个ajax调用,以从表中删除一行。我想做的是让php返回一个状态代码来触发ajax请求中的.success或.fail函数。 针对不同的问题,我提出了这个解决方案,但它不起作用: AJAX调用: function delete_mov(id){ $.ajax("delete_mov.php?id="+id ) .success(function(){ bootbox.alert("Movimento "+id+"
.success
或.fail
函数。
针对不同的问题,我提出了这个解决方案,但它不起作用:
AJAX调用:
function delete_mov(id){
$.ajax("delete_mov.php?id="+id
)
.success(function(){
bootbox.alert("Movimento "+id+" correttamente cancellato");
})
.fail(function(){
bootbox.alert("Problemi a cancellare il movimento "+id);
});
}
和php:
try{
$s = $dbh -> prepare("DELETE FROM movimenti_banca WHERE di=$id");
$s -> execute();
}
catch (PDOException $e){
http_response_code(500);
exit;
//$message = $error_message.' '.$e->getMessage();
}
http_response_code(200);
我无法得到的是在查询未执行或返回错误时触发.fail
。我确信这个查询失败了,因为我在里面放了一个错误(di而不是id)来确保这一点。
如果删除要调用的php文件,就会触发.fail
编辑:修改我的代码以使用http\u response\u code
测试它,但在查询失败时仍不会触发500状态。
EDIT2:调试时我意识到,即使查询有错误(
di=$id
应该是id=$id
),也不会输入catch部分,因此在PHP代码中永远不会设置状态500,使用函数将HTTP状态代码设置为您梦想的任何代码。jQuery不知道PHP脚本应该做什么,所以它不会在返回的结果中查找“status”变量。jQuery只知道实际的HTTP请求是否“工作”。如果它得到一个200的结果,这就是成功,不管结果中有什么
您需要让
success
处理程序查找HTTP请求成功但数据显示“error”的情况,或者(更好)让PHP脚本使用HTTP\u response\u code()
将HTTP状态从200更改为类似400或500的值,这将指示错误。这正是我在php中试图得到的。返回500状态。所以我要用http_响应_代码,很好知道!谢谢:)我试图将您的解决方案应用于我的代码(请参阅编辑的代码),但它总是返回200。我错过了什么?