簡體   English   中英

延遲的jQuery AJAX請求未運行done()回調函數

[英]Deferred jQuery AJAX request does not run done() callback function

我已經使用jQuery Deferred對象和AJAX請求設置了一個簡單的演示,以模擬我的應用程序的運行方式。

我的問題是,自從舊的非延遲方法切換過來以來,我無法獲得成功的回調。

僅調用fail()回調。 有人可以幫助我獲得成功的回調嗎? 我看不出問題出在哪里? 感謝任何幫助

我的演示在這里http://jsfiddle.net/jasondavis/y645yp4g/4/

我以前的AJAX電話就是這樣...

var ajax = $.ajax({
    type: 'POST',
    async: false,
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    url: '/gettask',
    data: {
        action: 'load-task-record',
        task_id: taskId
    },
    success: function(data) {
        // my success functionality here
    }
});

使用Deferred對象的新AJAX調用...

// Call function that execute AJAX request and returns it
var ajaxRequest = ajaxLoadTaskData();

ajaxRequest.done(function(response) {

    if( response.success ) {
        alert('AJAX request success');
    }else{
        // output the contents of response.errors
    }

}).fail(function(response) {
    // AJAX request failed
    console.log('response', response);
    alert('AJAX request failed');

}).always(function(response) {

});


// Run AJAX request and return Promise()
function ajaxLoadTaskData() {
    return $.ajax({
        type: 'POST',
        async: false,
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        url: '/gettask',
        data: {
            action: 'load-task-record',
            task_id: '1',
        },
    });
}

模擬對/ gettask的AJAX請求的AJAX響應

// Mock AJAX response for AJAX request to /gettask
$.mockjax({
    url: '/gettask',
    contentType: 'text/json',
    responseTime: 100,
    response: function(settings) {
        console.log('mockJax GET to /gettask :');
        //console.log(settings);
        if (settings.data.value == 'err') {
            this.status = 500;
            this.responseText = 'Validation error!';
        } else {
            var taskrecord = { 'name1': 'bar' };
            this.responseText = taskrecord;
        }
    },
});

/ gettask在該jsFiddle環境中不存在。 使用console.log(settings)查看響應的全部內容。 您將看到狀態為404。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM