2015-10-13 7 views
0

У меня есть функция ajax, которая обновляет мою базу данных .. Функция работает отлично, и после обновления базы данных я вызываю функцию successAlert(), которую я создал .. однако теперь я хочу для вызова функции ошибки в случае ошибки, однако при тестировании для прерывания кода я все равно получаю successAlert().Ajax return error to call error ajax error call

Ajax/Javascript:

var share = "test" 
var custid = "test"  

$.ajax({ 
      url: "assets/ajax/customer-rec.php", 
      type: "POST", 
      data: {UpdateAccount: "yes",custid: custid,share: share}, 
      success: function(result){ 
       successAlert()  
      }, 
      error: function(result){ 
       errorAlert()  
      } 
     }); 

PHP для обновления базы данных

if (isset($_POST['UpdateAccount'])){ 

    $custid = $_POST['custid']; 
    $share = $_POST['share']; 
    $query="UPDATE `users` SET `share_ord`='$share' WHERE id= $custid"; 
    $stmt = mysql_query($query); 

    if($stmt === false){ 
     return false 
    } 

} 
+0

Как вы создаете провал? Вы переименовали «assets/ajax/customer-rec.php»? –

ответ

5

возвращение ложным не является ошибкой. Если вы хотите отправить заголовки использование ошибок как

header('X-PHP-Response-Code: 404', true, 404); 

вы можете вызвать тот же errorAlert() функцию в успехе и так, что

$.ajax({ 
     url: "assets/ajax/customer-rec.php", 
     type: "POST", 
     data: {UpdateAccount: "yes",custid: custid,share: share}, 
     success: function(result){ 
      if(result === false){ 
       errorAlert() 
      } else { 
       successAlert() 
      }  
     }, 
     error: function(result){ 
      errorAlert()  
     } 
    }); 
+0

также стоит посмотреть http://stackoverflow.com/questions/377644/jquery-ajax-error-handling-show-custom-exception-messages – Alex

0

Для получения ошибки необходимо вернуть код состояния «404 'из функции php, которая обслуживает ваш запрос.

0

error обратного вызова вызывается, когда сервер возвращает код статуса HTTP, который указывает на ошибку, как таковой вы должны послать один, бывший HTTP 500

if($stmt === false){ 
    header('HTTP/1.1 500 Server error'); 
} 

видеть здесь list of HTTP коды статуса

0

.ajax() вызовет метод успеха, потому что, как только ваш запрос будет успешно обработан сервером, он повторно перенаправляет HTTP_OK клиенту и если .ajax не получен HTTP_OK, тогда он будет вызывать ошибку. Согласно вашему коду, это вызовет успех, потому что url существует, и сервер отправит HTTP_OK в браузер. Если вы хотите создать error: затем дать неправильный адрес или разъединение интернет или просто изменить

В PHP:

if($stmt === false){ 
     //If you want really generate some http error. 
     header('X-PHP-Response-Code: 500', true, 500); 
     exit(0); 
     //or else continue as per code 
     // return false; 
    } 

В ваших JS:

$.ajax({ 
     url: "assets/ajax/customer-rec.php", 
     type: "POST", 
     data: {UpdateAccount: "yes",custid: custid,share: share}, 
     success: function(result){ 
      if(!result){ 
       showErrorAlert() 
      } else { 
       showSuccessAlert() 
      }  
     }, 
     error: function(result){ 
      showErrorAlert()  
     } 
    });