Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Handle 500 errors in JSON (jQuery)

Tags:

json

jquery

ajax

This JSON request:

$.ajax({
    url:jSONurl+'?orderID='+thisOrderID+'&variationID='+thisVariationID+'&quantity='+thisQuantity+'&callback=?',
    async: false,
    type: 'POST',
    dataType: 'json',
    success: function(data) {
        if (data.response == 'success'){
            //show the tick. allow the booking to go through
            $('#loadingSML'+thisVariationID).hide();
            $('#tick'+thisVariationID).show();
        }else{
            //show the cross. Do not allow the booking to be made
            $('#loadingSML'+thisVariationID).hide();
            $('#cross'+thisVariationID).hide();
            $('#unableToReserveError').slideDown();
            //disable the form
            $('#OrderForm_OrderForm input').attr('disabled','disabled');
        }
    },
    error: function(data){
        alert('error');
    }
})

In certain circumstances will bring back a 500 error in the form of:

jQuery17205593111887289146_1338951277057({"message":"Availability exhausted","status":500});

This however is still useful to me and I need to be able to be able to handle this correctly.

For some reason though, when this 500 error is returned, my error function is not called and I just get a "NetworkError: 500 Internal Server Error" error in firebug.

How can I handle this?

like image 759
Fraser Avatar asked Jun 06 '12 03:06

Fraser


2 Answers

Did you try statuscode callback like

 $.ajax({
    statusCode: {
        500: function() {
          alert("Script exhausted");
        }
      }
   });
like image 119
Prasenjit Kumar Nag Avatar answered Oct 20 '22 22:10

Prasenjit Kumar Nag


If you are using POST you can use something like this:

$.post('account/check-notifications')
    .done(function(data) {
        // success function
    })
    .fail(function(jqXHR){
        if(jqXHR.status==500 || jqXHR.status==0){
            // internal server error or internet connection broke  
        }
    });
like image 9
Mladen Janjetovic Avatar answered Oct 20 '22 22:10

Mladen Janjetovic