Обработка исключений PHP с помощью JQuery

Я использую JQuery для вызова функции PHP, которая возвращает строку JSON при успешном выполнении или выдает некоторые исключения. В настоящее время я jQuery.parseJSON() в ответ, и если он не работает, я предполагаю, что ответ содержит строку исключения.

 $ .ajax ({
             тип: «POST»,
             url: "something.php",
             success: function (response) {
                  пытаться {
                      var json = jQuery.parseJSON (ответ);
                  }
                 catch (e) {
                     оповещение (ответ);
                     return -1;
                  }
                  // ... делай что-нибудь с json
             }

Может ли кто-нибудь предложить более элегантный способ поймать исключение?

Большое спасибо, Итамар

Solutions Collecting From Web of "Обработка исключений PHP с помощью JQuery"

Ну, у вас может быть глобальный обработчик исключений на PHP, который будет называть json_encode на нем, а затем повторять его.

 <?php function handleException( $e ) { echo json_encode( $e ); } set_exception_handler( 'handleException' ); ?> 

Затем вы можете проверить, если, скажем, json.Exception != undefined .

 $.ajax({ type: "POST", url: "something.php", success: function(response){ var json = jQuery.parseJSON( response ); if( json.Exception != undefined ) { //handle exception... } // ... do stuff with json } 

Поймайте исключение в своем PHP-скрипте – используя блок try .... catch и когда возникает исключение, попросите сценарий вывести объект JSON с сообщением об ошибке:

  try { // do what you have to do } catch (Exception $e) { echo json_encode("error" => "Exception occurred: ".$e->getMessage()); } 

вы затем будете искать сообщение об ошибке в сценарии jQuery и, возможно, вывести его.

Другой вариант – отправить заголовок 500 internal server error когда PHP встретит исключение:

 try { // do what you have to do } catch (Exception $e) { header("HTTP/1.1 500 Internal Server Error"); echo "Exception occurred: ".$e->getMessage(); // the response body // to parse in Ajax die(); } 

ваш объект Ajax затем вызовет функцию обратного вызова ошибки, и вы будете делать свою обработку ошибок там.

Выведите исключение на конец PHP и выведите сообщение об ошибке в формате JSON:

 echo json_encode(array( 'error' => $e->getMessage(), )); 
 echo json_encode(array( 'error' => $e->getMessage(), ));