javascript – 方法POST,状态(已取消)错误消息

前端之家收集整理的这篇文章主要介绍了javascript – 方法POST,状态(已取消)错误消息前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下代码给我一个方法POST,状态(已取消)错误消息:
$(document).ready(function() {
    var xhr = false;

    get_default();

    $('#txt1').keyup( function() {
        if(xhr && xhr.readyState != 4){
            alert("abort");
            xhr.abort();
        }

        if ($("#txt1").val().length >= 2) {
            get_data( $("#txt1").val() );
        } else {
            get_default();
        }
    });

    function get_data( phrase ) {
        xhr = $.ajax({
            type: 'POST',url: 'http://intranet/webservices.asmx/GetData',data: '{phrase: "' + phrase + '"}',contentType: 'application/json; charset=utf-8',dataType: 'json',success: function( results ) {
                $("#div1").empty();

                if( results.d[0] ) {
                    $.each( results.d,function( index,result ) {
                        $("#div1").append( result.Col1 + ' ' + result.Col2 + '<br />' );
                    });
                } else {
                    alert( "no data available message goes here" );
                }
            },error: function(xhr,status,error) {
                 var err = eval("(" + xhr.responseText + ")");
                 alert(err.Message) ;
            }
        });
    }

    function get_default() {
        $('#div1').empty().append("default content goes here.");
    }

});

只要每个ajax请求完成,代码实际上都可以工作,但是如果我在txt1中输入快捷键,即在上一个请求完成之前键入下一个字符,我会收到错误消息Method POST,Status(cancelled).

任何人都知道为什么会发生这种情况,以及如何纠正错误

解决方法

我想这个问题很简单.如果你调用xhr.abort();那么将为挂起的请求调用$.ajax的错误回调函数.所以你应该忽略错误回调的这种情况.所以可以修改错误处理程序
error: function(jqXHR,textStatus,errorThrown) {
    var err;
    if (textStatus !== "abort" && errorThrown !== "abort") {
        try {
            err = $.parseJSON(jqXHR.responseText);
            alert(err.Message);
        } catch(e) {
            alert("ERROR:\n" + jqXHR.responseText);
        }
    }
    // aborted requests should be just ignored and no error message be displayed
}

附:也许另一个我的old answer关闭问题也可能对你有兴趣.

猜你在找的JavaScript相关文章