在JSON(jQuery)中处理500错误

11 浏览
0 Comments

在JSON(jQuery)中处理500错误

这个JSON请求会在某些情况下返回一个500错误,格式如下:

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

然而,这对我仍然有用,我需要正确处理这个错误。

但是出于某种原因,当返回这个500错误时,我的错误函数没有被调用,而是在firebug中得到一个“NetworkError: 500 Internal Server Error”的错误。

我应该如何处理这个问题?

0
0 Comments

问题原因:使用statuscode回调函数的方式无法处理500错误,并且jQuery无法进入回调函数。

解决方法:使用error回调函数来处理500错误。

有人尝试过使用statuscode回调函数来处理500错误,代码如下:

$.ajax({
    statusCode: {
        500: function() {
          alert("Script exhausted");
        }
      }
});

Vince也推荐了这种方法。但是我尝试过后仍然遇到了错误,并且发现jQuery无法进入回调函数。

为了解决这个问题,我们可以使用error回调函数来处理500错误。具体代码如下:

$.ajax({
    //其他参数
    error: function(xhr, textStatus, errorThrown) {
        if(xhr.status == 500) {
            alert("Script exhausted");
        }
    }
});

这样,当发生500错误时,jQuery会进入error回调函数中的逻辑进行处理。

0
0 Comments

问题:如何处理JSON中的500错误(使用jQuery)?

原因:当使用POST请求时,可能会出现500错误。500错误表示服务器发生了内部错误。

解决方法:

1. 使用jQuery的$.post()方法发送POST请求。

2. 使用.done()方法处理请求成功的情况。

3. 使用.fail()方法处理请求失败的情况。

4. 在.fail()方法中,通过判断jqXHR的status属性来确定错误类型。

5. 如果jqXHR的status为500或0,表示发生了服务器内部错误或者网络连接中断。

6. 在对应的处理代码块中处理这些错误情况。

以下是示例代码:

$.post('account/check-notifications')
    .done(function(data) {
        // 处理请求成功的情况
    })
    .fail(function(jqXHR){
        if(jqXHR.status==500 || jqXHR.status==0){
            // 处理服务器内部错误或者网络连接中断的情况  
        }
    });

通过以上代码,可以在POST请求出现500错误时进行相应的处理。

0
0 Comments

问题出现的原因可能是服务器返回了500错误,解决方法是添加一个错误处理函数来处理这个错误。代码如下:

$.ajax({
    statusCode: {
        500: function() {
            alert("error");
        }
    },
    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');
    }
})

0