I\'m using JQuery to call a PHP function that returns a JSON string upon success or throws some exceptions. Currently I\'m calling jQuery.parseJSON()
on the res
Well, you can have a global exception handler in PHP that would call json_encode
on it then echo it out.
<?php
function handleException( $e ) {
echo json_encode( $e );
}
set_exception_handler( 'handleException' );
?>
You could then check if, say, 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
}
Catch the exception in your PHP script - using a try .... catch
block - and when an exception occurs, have the script output a JSON object with an error message:
try
{
// do what you have to do
}
catch (Exception $e)
{
echo json_encode("error" => "Exception occurred: ".$e->getMessage());
}
you would then look for the error message in your jQuery script, and possibly output it.
Another option would be to send a 500 internal server error
header when PHP encounters an exception:
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();
}
your Ajax object will then invoke the error callback function, and you would do your error handling in there.
Catch the exception on the PHP end, and output an error message in JSON format:
echo json_encode(array(
'error' => $e->getMessage(),
));
echo json_encode(array(
'error' => $e->getMessage(),
));