我有一个应用程序可以连续运行并在需要时自行更新。它使用 ajax 调用一个 php 文件,该文件将检查数据库中的一些数据,如果它已更改,则我们更新屏幕。php 似乎工作得很好,它是我遇到问题的 js。
$(document).ready(function () {
$('.trade_window').load('signals.php?action=init', setInterval(function () {
for(var i = 1; i < 6; i++) {
console.log('market_name_' + i + " is " + $('.market_name_' + i).text().trim());
$.ajax({
url: 'signals.php?action=check¶m=' + JSON.stringify({
'market_number': i,
'market_name': ('.trade_window .market_name_' + i).text().trim(),
'trade_type': $('.trade_window .status_' + i).text().trim(),
'trade_start_price': '1.1234',
'trade_open_time': '18:21:02'
}),
type: 'GET',
success: function (result) {
if(result.trim() === "false") {
console.log("RESULT IS " + result.trim());
} else {
$('.trade_window #market_1').html(result);
setTimeout(function () {
// This is to make it a little more visible
console.log(" ");
console.log(" ");
console.log("PAUSE!!!!");
console.log(" ");
console.log(" ");
}, 5000);
}
}
});
};
}, 2000));
});
因此,应用程序中发生的情况是其中有 6 个元素(div),我们有一些信息,如果它们不同,则将它们与 DB 上的数据进行比较,然后需要显示 DB 信息。
现在上面的脚本检查每个元素,然后在需要时更新,问题是 ajax 调用是在后台完成的,而所有其他的东西都是在我们等待 ajax 调用完成时执行的,所以到他们的时候已完成 for 循环在末尾,因此即使元素 1、2、3、4 或 5 发生更改,也只会更新元素 6。
我能做些什么来改变这个?是否有可用于检查 php 文件是否已完成加载的 js/jquery 方法?
谢谢你的时间。