什么时候不能按预期工作

时间:2018-03-09 00:09:01

标签: jquery ajax .when

调用AJAX函数并等待AJAX​​函数完成。

$.when(updateApplication("about_you"))
    .then(function() {
        console.log("when is working perfectly :          ");
    });


function updateApplication(){
    //some code here

    // ajax call update the application and get response back like if applications is updated successfully or not with true/false status.

    return $.ajax({
            type: 'POST',
            url: base_url,
            data: {json: data},
            dataType: 'json'
        }).done( function( data ) {
            return data;
        }).fail({
            return data;    
        });
}

$.when调用AJAX函数,AJAX函数完美地工作,但$.when内的代码不执行。 (console.log从不打印)

完成了$。当完成时

    $.when(updateApplication("about_you")).then(function(){
        console.log("when is working perfectly :          ");
    }).done(function(data){
        console.log("see if it works  :          ");
    });

仍然没有console.log可以工作,换句话说$。当body永远不会执行

调用时再试一次

    $.when(updateApplication("about_you")).done(function(data){
        console.log("see if it works  :          ");
    });

仍然无法打印console.log。知道调用有什么问题。一旦ajax调用完成,需要修复能够执行$ .when的主体。

1 个答案:

答案 0 :(得分:2)

您已经在updateApplication内处理了ajax,您需要删除正确使用的done用法:

function updateApplication(){
  //some code here

  // ajax call update the application and get response back like if applications is updated successfully or not with true/false status.

  return $.ajax({
        type: 'POST',
        url: base_url,
        data: {json: data},
        dataType: 'json'
    });
}

如果您仍然没有得到任何类型的回复,则可能需要在链接.then之前先检查失败:

$.when(updateApplication("about_you"))
    .fail(function(){ alert('Failed!'); })
    .then(function(){ alert('Success!'); });

另请注意,如果您计划在此处结束承诺链,then可能会替换为donethen()pipe()的别名并返回一个新的承诺,其中done只返回一个无法链接的成功对象

此处有更多信息:jQuery deferreds and promises - .then() vs .done()