使用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(), ));