我正在开发一个与服务器通信以更新其数据库的Web应用程序。问题是更新可能需要几毫秒甚至几十秒的任何时间进行更新。我想在客户端引入一些监听器,等待服务器完成它的最后一个工作并通知客户端强制刷新(通过刷新我的意思是调用ajax函数,询问服务器的新数据,破坏当前数据表和成长为新的)。 到目前为止,我只是在对服务器数据库进行任何更改后稍稍调用了客户端上的刷新,但我更喜欢在客户端“灰显”该表,直到它从服务器获得响应。 / p>
我是jQuery领域的新手,有人能指出我如何实现这一目标吗?
答案 0 :(得分:1)
为什么不使用$.ajax()
进行AJAX调用,然后挂钩延迟done()
函数。这样,当您的数据库更新完成后,您可以处理done()
函数内的所有内容。
例如:
$.ajax({
'type': 'get',
'url': 'update_db.php'
}).done(function() {
// The PHP has executed and the call has returned.
// 'Ungrey' your items here...
});
答案 1 :(得分:0)
您可以定期轮询服务器以获取更新:
var job = $.Deferred();
var POLL_INTERVAL_MSEC = 5000;
var timer = setInterval( function() {
$.ajax('status/isfinshed').done( function( response ) {
if ( response.finished ) {
clearInterval( timer );
job.resolve();
}
});
} , POLL_INTERVAL_MSEC);
job.done( function() {
//success code
});