我正在使用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 }
有人能建议一种更优雅的方式来捕捉异常吗?
非常感谢, 伊塔马尔
答案 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(),
));