如何在jQuery AJAX响应中收到错误?

我正在使用jQuery $ .ajax()函数在php页面上执行数据库插入操作。 因此,成功时它将执行常规操作但我希望ajax调用在更新操作失败时收到错误。

所以它应该是:

  1. $ .ajax – >调用php函数
  2. 成功记录插入后获得成功
  3. 不成功插入时收到错误

那么,我应该做一个假的回报; 从我的PHPfunction? 我认为$ .ajax()的成功或错误取决于AJAX调用是否成功。 所以,我想即使我回归虚假; 从我的PHP函数来看,它仍将被视为ajax调用的“成功”。 对

您可以按照建议的方式在服务器响应中(或使用JSON)返回错误消息。 但我不太喜欢它,因为这会污染返回的数据。

我喜欢我最近使用的另一种方式,它涉及创建自定义HTTP标头以通知是否存在错误。

PHP代码:

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

jQuery代码:

 $.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"); } } ... }) 

如您所见,我们创建了一个名为DB_SUCCESS的自定义HTTP标头,用作元数据,因此我们可以将其分配给服务器端(php)并使用客户端(javascript)读取它以了解是否存在错误。

希望这可以帮助。 干杯

您需要在$ .ajax()success:function中处理PHP的成功/错误

假设这是你的ajax.php:

 if($whatever) { echo 'success'; } else { echo 'fail'; } 

假设这是你的javascript $ .ajax():

 success: function(data) { switch(data) { case 'success': // handle good logic break; case 'fail': default: // handle bad logic break; } } 

我评估来自服务器的响应,如果PHP中发生错误,它只是输出JavaScript代码来显示错误。

适用于各种各样的事情,包括重新登录会话超时,访问限制,exception处理和其他一切。

我希望这种方法更受欢迎。

https://github.com/atk4/atk4/blob/master/templates/js/atk4_univ.js#L413

这很简单,简而言之:您可以捕获从PHP返回的任何内容。

详情:以下代码段可以帮助您清楚地了解问题。

PHP

 $result = //your database result if($result){ //Print any success message you want the user to see echo "Success"; }else{ //Print any error message you want the user to see echo "Error"; } 

JQUERY

 $.ajax({ type: "POST", url: "controller.php", data: params, success: function(msg){ //Alert the returned message to the user, //the variable msg already contains your message //whether it is success or error, //it can even contain HTML or JavaScript alert(msg); } }); 

我会用PHP构建一个数组。 如

 $status['completed'] = true; $status['message'] = "Completed"; 

取决于你如何使用插入更改这两个值。

然后我会做http://php.net/manual/en/function.json-encode.php json_encode并回复它。 你的jQuery会收到JSON ,如果completed真的那么它就可以了。 如果为false ,请检查message

您还可以使用jQuery中的getJSON方法使其更加简单。

http://api.jquery.com/jQuery.getJSON/

Ajax正在客户端发生。

您的PHP已在服务器上完成。

这是一个很好的例子可能会有所帮助:

jQuery AJAXerror handling

 $.ajax({ type: "POST", url: "login.php", data: "action=login&user=" + user + "&pass=" + pass, success: function(xhr){ if ((xhr == "Invalid Login") || (xhr == "Invalid charaters in username.") || (xhr == "Missing username or password.") || (xhr == "Unknown Error")) { $("#loginMessageContent").html(xhr); } else { simplemodalClose (dialog); } }, error: function(xhr) { alert ("Oopsie: " + xhr.statusText); } });