ajax返回错误状态代码

ajax返回错误状态代码

问题描述:

我正在一个小网站,我正在做一个Ajax调用删除表中的一行。我想要做的是让PHP返回一个状态代码来触发我的ajax请求中的.success.fail函数。 展望不同的问题,我想出了这个解决方案,但它不工作:ajax返回错误状态代码

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_response_code进行测试,但在查询失败时仍未触发500状态。

EDIT2:调试我意识到,即使查询有错误(di=$id应该id=$id)捕捉部分不进入,因此500的状态从未设置

jQuery不知道你的PHP脚本应该做什么,所以它不会在返回的结果中寻找“状态”变量。所有的jQuery知道是否实际的HTTP请求“工作”。如果回来一个200的结果,,这是成功不管什么结果。

您或者需要让您的success处理程序查找HTTP请求成功但数据显示“错误”的情况,或者(更好)让PHP脚本使用http_response_code()将HTTP状态从200更改为400或500会显示错误。

+0

这正是我想要在我的PHP。返回500状态。所以我必须使用http_response_code,很高兴知道!谢谢:) –

+0

我试图将您的解决方案应用于我的代码(请参阅编辑的代码),但它总是返回200.我错过了什么? –

在你的PHP代码,使用http_response_code功能可以将HTTP状态码设置为任何你想做的事情。