如何在jQuery的Ajax响应接收错误?错误、如何在、jQuery、Ajax

2023-09-10 18:19:00 作者:久不愈i

我使用jQuery $。阿贾克斯()函数PHP页面上执行数据库插入操作。因此,在成功的话会做常规操作,但我想如果更新操作失败的Ajax调用接收错误。

I am using jQuery $.ajax() function to perform a database insert operation on a php page. So, on success it will do the regular operation but I want the ajax call to receive error if the update operation fails.

所以,它应该是:

$阿贾克斯 - >调用PHP函数 在接收成功的记录插入成功 在unsuccessfull插入接收错误

所以,我应该做一回虚假的;从我的PHP函数?我认为,$。阿贾克斯()成功或错误的决定,如果AJAX调用成功与否。所以,我想就算我返回false;从我的PHP函数它仍然被认为是成功的Ajax调用。右

So, should I do a return false; from my php function? I think the $.ajax() success or error depends if the AJAX call was successful or not. So, I think even if I return false; from my php function it will still be considered a "success" for the ajax call. Right

推荐答案

您可以在您的服务器响应(或使用JSON)有人建议返回错误信息。但我不喜欢它太多,因为这种污染返回的数据。

You could return the error message in your server response (or using JSON) as someone suggested. But I don't like it too much because this pollutes the data returned.

我喜欢另一种方式我一直在使用最近所,其中包括创建一个自定义的HTTP头,如果有一个错误通知。

I like another way I've been using recently, which involves creating a custom HTTP header to inform if there was an error.

PHP code:

if($there_was_error){
   header("DB_SUCCESS: 0"); //Sends a custom header
}else{
   header("DB_SUCCESS: 1");
}

jQuery的code:

jQuery code:

$.ajax({
  ...
  success: function(data, status, xhr){
     //You can use your 'data' var as always
     if(xhr.getResponseHeader("DB_SUCCESS") == 1){
        alert("Save successful");
        //Your regular sutff
     }else{
        alert("Save failed");
     }         
  }
  ...
})

正如你所看到的,我们创建了一个自定义HTTP标头,叫 DB_SUCCESS 来作为元数据,因此我们可以将其指定服务器端(PHP)和阅读与客户端(JavaScript)知道,如果有一个错误。

As you can see, we created a custom HTTP header, called DB_SUCCESS to be used as metadata, so we can assign it server-side (php) and read it with client-side (javascript) to know if there was an error.

希望这有助于。干杯