.done()jquery无法正常工作

时间:2014-08-04 06:00:24

标签: javascript jquery ajax

我使用以下代码进行ajax调用

var getRequest = $.ajax({
    type: 'GET',
    url: Url,
    async: false,
    dataType: "text",
    complete: function () {
        $('#loading').hide();
    }
});

请求完成后,数据也会在收到以下数据后撤回:

getRequest.done(function (dataDb) {
    if (dataDb) {
        alert('dataDb: ' + dataDb);

    }
});

getRequest.fail(function (jqXHR, textStatus, error) {
    alert('data error within getUsersRequest ' + textStatus + ' : ' + error);
});

我收到getRequest.done(function(dataDb)getRequest.fail(function(jqXHR, textStatus, error)不是函数的错误。

3 个答案:

答案 0 :(得分:0)

这是因为您的JQuery版本太旧了。

如果您不愿意升级success的最新版本,则可以使用JQuery

success: function(dataDb) {

    }

答案 1 :(得分:0)

success仅在AJAX呼叫从后端成功时触发,即它返回HTTP 200状态作为响应。如果任何错误在失败时触发,并在请求完成时完成,无论成功与否。

jQuery 1.8对象的jqXHR上(由$.ajax返回)成功将被替换为完成,错误失败并且始终完成。

但是,您仍然可以使用当前语法初始化AJAX request。所以这些做类似的事情:

// set success action before making the request
$.ajax({
  url: '...',
  success: function(){
    alert('AJAX successful');
  }
});

// set success action just after starting the request
var jqxhr = $.ajax( "..." )
  .done(function() { alert("success"); });

上次:您需要使用.success而不是.done

答案 2 :(得分:-1)

您可以尝试使用.success

var getRequest = $.ajax({
                type : 'GET',
                url : Url,
                async: false,
                dataType: "text",
                complete: function(){
                    $('#loading').hide();
                }
            }).success(function(dataDb){   
                if(dataDb) {
                    alert('dataDb: '+ dataDb);

                } 
            });