我有一个 php/jQuery 网站,它提供了在服务器上以异步模式启动进程的方法。
当我单击特定链接时,服务器通过 php 启动一个进程并返回一个页面,告诉该进程已启动并显示一个沙漏。
如果我们点击沙漏,就会有一个 ajax 查询询问服务器进程是否结束。
但是是否有可能,以及如何使用 jQuery 或纯 javascript 来制作一个计时器以每 30 秒自动检查一次服务器(发送相同的 ajax 查询)?当进程结束时,计时器应该停止。
谢谢
我有一个 php/jQuery 网站,它提供了在服务器上以异步模式启动进程的方法。
当我单击特定链接时,服务器通过 php 启动一个进程并返回一个页面,告诉该进程已启动并显示一个沙漏。
如果我们点击沙漏,就会有一个 ajax 查询询问服务器进程是否结束。
但是是否有可能,以及如何使用 jQuery 或纯 javascript 来制作一个计时器以每 30 秒自动检查一次服务器(发送相同的 ajax 查询)?当进程结束时,计时器应该停止。
谢谢
Yes there is: Javascript timer But there are callbacks of ajax requests, which returns when the process is ended.
$.ajax({
type: "POST",
url: "process.php",
data: dataString,
dataType: "json",
success: function(response) {
//this returns when your ajax process is ended with no error.
},
error: function (xhr, ajaxOptions, thrownError) {
//this returns when ajax process ended with error
}
});
So you don't have to ping the server for gettind the info: "Are you ready yet?"
如何使用更简单的 jquery 版本
$.post("test.php", { name: "someName", time: "2pm" })
.done(function(data) {
alert("Data Loaded: " + data);
});
参数名称和时间是请求的元素,您可以在 .php 文件中像传统方式一样使用它们$_POST['name']
并且 .php 文件的响应将在数据变量中检索
jQuery AJAX 助手将为异步请求完成时可以执行的回调提供工具。
根据http://api.jquery.com/jQuery.get/
$.get('ajax/test.html', function(data) {
$('.result').html(data);
alert('Load was performed.');
});
在对 test.html 的 GET 请求完成之前,上面的匿名函数不会运行。