ajax返回错误状态代码

时间:2016-07-26 10:54:09

标签: php mysql

我正在一个小网站上工作,我正在进行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

编辑:修改我的代码以使用http_response_code对其进行测试,但在查询失败时仍未触发500状态。

EDIT2:调试我意识到即使查询有错误(di=$id应该是id=$id),也不会输入catch部分,因此状态500永远不会设置

2 个答案:

答案 0 :(得分:1)

在您的PHP代码中,使用http_response_code函数将HTTP状态代码设置为您梦寐以求的任何内容。

答案 1 :(得分:0)

jQuery不知道你的PHP脚本应该做什么,所以它不会寻找"状态"返回结果中的变量。所有jQuery都知道实际的HTTP请求是否正常工作"。如果它返回200结果, 该成功 ,无论 结果。

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