我希望在从 sqLite 的数据库中查询信息时显示加载消息。这是我到目前为止所拥有的:
$.mobile.showPageLoadingMsg("a", "Updating Distributor List...", true);
$.ajax({
type: "POST",
cache: false,
url: "https:xxxx.php",
data: { lastUpdated: lastUpdated, section: 'distributors'},
dataType: "json",
success: function(result){
$.each(result.response, function(i, val) {
db.transaction(function(ctx) {
ctx.executeSql("SELECT ID FROM distributors WHERE token = '"+val.ID+"' ", [], function(tx,checkres) { //select all from phoneDB
if(checkres.rows.length) {
tx.executeSql("update distributors set distributorName='"+val.distributorName+"',address='"+val.address+"',postcode='"+val.postcode+"',phone='"+val.phone+"',email='"+val.email+"',lastUpdated='"+val.lastUpdated+"' WHERE token='"+val.ID+"'", []);
} else {
if(val.deleted != "1") {
tx.executeSql("INSERT INTO distributors(distributorName,address,postcode,phone,email,lastUpdated,token) VALUES('"+val.distributorName+"','"+val.address+"','"+val.postcode+"','"+val.phone+"','"+val.email+"','"+val.lastUpdated+"','"+val.ID+"')", []);
}
}
});
});
});
$.mobile.hidePageLoadingMsg();
}
})
所以这会触发一个 AJAX 查询,我最初的想法是在成功完成后显示加载消息并隐藏它。但是......在成功回调中是另一个本地数据库查询,最多需要 15 秒才能完成。这也是异步的,因此加载消息取决于等待这些查询完成。
此外,我有大约 3 或 4 个这些 ajax 查询都在做几乎相同的事情,所以加载消息会根据我们当前所在的 ajax 成功回调而改变。
希望这是有道理的。