Is there a clean, easy way to throw php exceptions through a json response jquery/ajax call.
You could do something like this in PHP (assuming this gets called via AJAX):
<?php  try {     if (some_bad_condition) {         throw new Exception('Test error', 123);     }     echo json_encode(array(         'result' => 'vanilla!',     )); } catch (Exception $e) {     echo json_encode(array(         'error' => array(             'msg' => $e->getMessage(),             'code' => $e->getCode(),         ),     )); }   In JavaScript:
$.ajax({     // ...     success: function(data) {         if (data.error) {             // handle the error             throw data.error.msg;         }         alert(data.result);     } });   You can also trigger the error: handler of $.ajax() by returning a 400 (for example) header:
header('HTTP/1.0 400 Bad error');   Or use Status: if you're on FastCGI. Note that the error: handler doesn't receive the error details; to accomplish that you have to override how $.ajax() works :)
Facebook do something in their PHP SDK where they throw an exception if a HTTP request failed for whatever reason. You could take this approach, and just return the error and exception details if an exception is thrown:
<?php  header('Content-Type: application/json');  try {     // something; result successful     echo json_encode(array(         'results' => $results     )); } catch (Exception $e) {     echo json_encode(array(         'error' => array(             'code' => $e->getCode(),             'message' => $e->getMessage()         )     )); }   You can then just listen for the error key in your AJAX calls in JavaScript:
<script>     $.getJSON('http://example.com/some_endpoint.php', function(response) {         if (response.error) {             // an error occurred         }         else {             $.each(response.results, function(i, result) {                 // do something with each result             });         }     }); </script> 
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With