假设有一个表格。提交表单时,我正在向服务器调用ajax请求。当它正在执行时,我不希望再次触发ajax调用。 一旦我完成了ajax调用,那么只能再次触发ajax调用。
我该如何实现?在这里,我想使用JQUERY库来实现它。
答案 0 :(得分:2)
当函数运行时,将变量(在比启动Ajax调用的函数更宽的范围内)设置为值(例如true
)。
回调运行时将其设置为不同的值。
如果在初始函数运行时已经设置,则立即返回。
var call_in_progress = false;
function myEventHandler(e) {
if (call_in_progress) { return false; }
call_in_progress = true;
jQuery.ajax( etc etc myCallback );
}
function myCallback () {
call_in_progress = false;
}
答案 1 :(得分:1)
你只需使用一些javascript变量即可。
操作开始时将其设置为true。 并在操作完成时再次将其设置为false。
如果任何并行操作开始,那应该检查它的值 变量和返回,如果没有做任何事情就是真的。
示例:
var myOperationLocks = new Array();
function formPostByAjax()
{
/* check for lock */
if(myOperationLocks['form_post'] == true)
return ;
/* set the lock */
myOperationLocks['form_post'] = true;
/* do some work */
jQuery.post(url,data,function(response)
{
/* do something with response , then release the lock */
myOperationLocks['form_post'] = false ;
}
}
答案 2 :(得分:0)
保持启动Ajax请求时设置为TRUE的变量。通过在设置每个请求之前检查此变量。
为避免在遇到某些麻烦时执行操作,例如没有来自服务器的回复,如果问题不经常发生,您可以抛出“你真的想要”查询。您也可以让变量保持时间,如果时间超出某个限制,请再次允许它。但是请记住在Ajax完成后清除时间变量。