$ .when()等同于获取数据

时间:2018-06-22 03:04:10

标签: jquery

为了准备具有多个未嵌套的AJAX调用,我正在尝试将一些代码转换为使用$ .when()。

这是从数据库成功获取数据的原始代码:

$(document).ready(function() {
    initialize();
});

function executeAjax(parameters) {
    return $.ajax({
        method: "POST",
        url: 'js/functions.php',
        data: parameters,
        async: true,
        cache: false
    });
}

function initialize() {
    var parameters = 
    {
	    caller: caller,
	    action: 'read'
    };

    executeAjax(parameters)
    .done(function(data){
        console.log(data);
    })
    .fail(function(){
        console.log('AJAX call failed');
    });
}

上面的代码使从数据库中获取的数据显示在控制台中。

在此链接https://medium.com/coding-design/writing-better-ajax-8ee4a7fb95f中,使用标题为“模块化AJAX请求”的部分的建议,这是initialize()方法的重写版本-我试图使用$ .when()编写等效版本:< / p>

function initialize() {
    var parameters =
    {
        caller: caller,
        action: 'read'
    };

    var getList = executeAjax(parameters);

    $.when(getList).then(function(list){
        console.log(list.data);
    });
}

不幸的是,控制台显示的是“未定义”,而不是数据库中的数据。它引用console.log(list.data);作为未定义的行。为什么重写后的版本不回退数据库数据?

1 个答案:

答案 0 :(得分:0)

弄清楚了。重写版本中的问题是console.log(list.data);,当该行更改为console.log(list);时,它从数据库中拉回了数据。