【发布时间】:2011-02-18 02:13:39
【问题描述】:
我正在使用 JQuery 调用一个 PHP 函数,该函数在成功时返回一个 JSON 字符串或抛出一些异常。目前我在响应上调用jQuery.parseJSON(),如果它失败了,我假设响应包含一个异常字符串。
谁能提出一种更优雅的方法来捕获异常?
非常感谢, 伊塔马尔
【问题讨论】:
标签: php exception-handling jquery
我正在使用 JQuery 调用一个 PHP 函数,该函数在成功时返回一个 JSON 字符串或抛出一些异常。目前我在响应上调用jQuery.parseJSON(),如果它失败了,我假设响应包含一个异常字符串。
谁能提出一种更优雅的方法来捕获异常?
非常感谢, 伊塔马尔
【问题讨论】:
标签: php exception-handling jquery
在您的 PHP 脚本中捕获异常 - 使用 try .... catch 块 - 当异常发生时,让脚本输出带有错误消息的 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 对象将调用错误回调函数,您将在那里进行错误处理。
【讨论】:
好吧,您可以在 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端捕获异常,并以JSON格式输出错误信息:
echo json_encode(array(
'error' => $e->getMessage(),
));
【讨论】:
echo json_encode(array(
'error' => $e->getMessage(),
));
【讨论】: