尝试使用 jquery 和 ajax 更改最初在我的页面上打印的消息:
document.write('<p align="center" id="DataReady">Waiting for server to update the table</p>');
一旦进行了所有 ajax 调用并更新了我的数据,就可以进行其他操作。我的代码的大致轮廓如下:
function getData(m) {
jqs[m] = $.ajax({
url : WebURL[m],
type : 'GET',
dataType: 'jsonp',
myJ : m
});
return jqs[m];
}
function handleData(json_data){
var j = this.myJ;
// Inside this function, I manipulate the json_data
// object and store it into other variables
}
$(document).ready(function() {
for (var i=0; i<5; i++){
getData(i).done(handleData);
}
$.when(jqs).done(function(){
document.getElementById("DataReady").innerHTML = "Up to date!"
});
});
当文档准备好时,我基本上循环通过我的 getData 函数并使用延迟对象执行 ajax 调用,当每个相应的 ajax 调用完成时,handleData 函数获取 json 数据(特定于每个相应的 ajax 调用)并对其进行操作进一步使用。
但是,一旦我遍历所有 ajax 调用(存储在 jqs 数组中),我似乎无法使最后一部分正常工作:我的$.when
声明。我已经查看了 jquery API ( http://api.jquery.com/jQuery.when/ ),似乎看不出我做错了什么。
我希望最后一条语句发生的情况是,当所有 ajax 调用(存储在数组 jqs 中)时,初始消息更改为“最新!”,但不会更早。现在似乎消息正在更改为“最新!” 即使没有完成 ajax 调用。更令人不安的是,如果我删除该行getData(i).done(handleData);
,即使没有发生 ajax 调用,消息仍然会更改。有谁知道如何解决这个问题?非常感谢任何建设性的帮助。谢谢。