为了准备具有多个未嵌套的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);
作为未定义的行。为什么重写后的版本不回退数据库数据?
答案 0 :(得分:0)
弄清楚了。重写版本中的问题是console.log(list.data);
,当该行更改为console.log(list);
时,它从数据库中拉回了数据。