weixin_33726943 2014-10-07 15:19 采纳率: 0%
浏览 29

jQuery和Ajax:赶上500

I have this jQuery code that send an Ajax request on a form submit. My issue is I can't catch timeout error using that code. When I send a 500 response myself it is working but if I get a timeout then I see 500 in the console but nothing happens, the error callback is not executed. Instead I get :

SyntaxError: syntax error

On the line:

$(document).ready(function(){

Here is the full code:

$(document).ready(function(){
    $('body').on('submit', 'form#myForm', function(){
        $.ajax({
            type: "POST",
            url: $(this).attr('action'),
            data: $(this).serialize(),
            dataType: 'json',
            success: function(data, textStatus, jqXHR){
                alert('success!');
            },
            error: function(jqXHR, textStatus, errorThrown){
                alert('error!');
            }
        });
        return false;       
    });
});
  • 写回答

2条回答 默认 最新

  • weixin_33725126 2014-10-07 15:31
    关注

    This may not be the answer you are looking for, but you can set the timeout of the ajax query to match you server, or be slightly less, and trap it, then check the textStatus.

    $.ajax({
        type: "POST",
        url: $(this).attr('action'),
        data: $(this).serialize(),
        dataType: 'json',
        timeout: 3000, //3 Seconds
        success: function (data, textStatus, jqXHR) {
            alert('success!');
        },
        error: function (jqXHR, textStatus, errorThrown) {
            if (textStatus == 'timeout') {
                alert('Failed from timeout');
                //do something. 
            }
        }
    });
    
    评论

报告相同问题?