使用JQuery处理PHP异常

时间:2010-05-11 10:44:35

标签: php exception-handling jquery

我正在使用JQuery调用PHP函数,该函数在成功时返回JSON字符串或抛出一些异常。目前我在响应中调用jQuery.parseJSON(),如果失败,我认为响应包含异常字符串。

$.ajax({
            type: "POST",
            url: "something.php",
            success: function(response){
                 try {
                     var json = jQuery.parseJSON(response);
                 }
                catch (e) {
                    alert(response);
                    return -1;
                 }
                 // ... do stuff with json
            }

有人能建议一种更优雅的方式来捕捉异常吗?

非常感谢, 伊塔马尔

4 个答案:

答案 0 :(得分:3)

使用try .... catch块在PHP脚本中捕获异常 - 当发生异常时,让脚本输出一个带有错误消息的JSON对象:

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

然后,您将在jQuery脚本中查找错误消息,并可能输出它。

另一种选择是在PHP遇到异常时发送500 internal server error标头:

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对象将调用错误回调函数,您将在那里进行错误处理。

答案 1 :(得分:2)

好吧,你可以在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
            }

答案 2 :(得分:0)

在PHP端捕获异常,并以JSON格式输出错误消息:

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

答案 3 :(得分:-1)

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