使用JQuery处理PHPexception

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

 $就({
            类型:“POST”,
             url:“something.php”,
            成功:function(响应){
                 尝试{
                      var json = jQuery.parseJSON(response);
                  }
                 catch(e){
                    警报(响应);
                    返回-1;
                  }
                  // ...用json做点什么
             }

任何人都可以建议一种更优雅的方式来捕捉exception吗?

非常感谢,Itamar

好吧,你可以在PHP中拥有一个全局exception处理程序,它可以在其上调用json_encode然后将其回显。

  

然后你可以检查一下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脚本中捕获exception – 使用try .... catch块 – 当发生exception时,让脚本输出一个带有错误消息的JSON对象:

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

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

另一个选择是在PHP遇到exception时发送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对象将调用错误回调函数,您将在那里进行error handling。

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

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