我正在一个小站点上工作,在那里我正在执行ajax调用以从表中删除一行。我想做的是让php返回一个状态代码来触发我的ajax请求中的.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
。
EDIT:修改了我的代码,用http_response_code
测试它,但当查询失败时仍然没有触发500状态
EDIT2:debugging我意识到,即使查询有错误(di=$id
应该是id=$id
),catch部分也不会输入,因此状态500永远不会设置
在您的PHP代码中,使用http_response_code函数将http状态代码设置为您想要的任何代码。
您需要让success
处理程序查找HTTP请求成功但数据显示"错误"的情况,或者(最好)让PHP脚本使用http_response_code()
将HTTP状态从200更改为400或500,这将指示错误。