Javascript 通过ajax请求一些东西-如何停止其他请求,直到这个请求完成
我有一个输出json数据的php脚本。为了测试的目的,我把sleep(2)放在了开头 我有一个html页面,当您单击一个按钮时,它会请求该数据,并执行Javascript 通过ajax请求一些东西-如何停止其他请求,直到这个请求完成,javascript,jquery,Javascript,Jquery,我有一个输出json数据的php脚本。为了测试的目的,我把sleep(2)放在了开头 我有一个html页面,当您单击一个按钮时,它会请求该数据,并执行$('.dataarea').append(data.html) (php脚本返回一个json编码的数组。data.html包含我想放在…此处末尾的html 问题是,如果我点击按钮的速度太快(即在两秒钟内不止一次(由于php脚本中的睡眠(2)),它会再次请求php文件 我怎样才能让它一次只做一个请求 我尝试过这个(向下编辑以显示重要部分): 但这似
$('.dataarea').append(data.html)
(php脚本返回一个json编码的数组。data.html包含我想放在…此处末尾的html
问题是,如果我点击按钮的速度太快(即在两秒钟内不止一次(由于php脚本中的睡眠(2)),它会再次请求php文件
我怎样才能让它一次只做一个请求
我尝试过这个(向下编辑以显示重要部分):
但这似乎不起作用。我甚至尝试用set_busy()和set_not_busy()替换amibusy=true | false(并使函数am_i_busy(){return amibusy;})
但这一切似乎都不起作用。我缺少什么?禁用单击事件中的按钮,并在请求完成后再次启用它。请注意,请求是异步的(即“发送请求”立即返回),因此您必须注册一个在收到应答时调用的函数
在jQuery中,请参阅load()
函数和success方法以及各种AJAX事件,您可以使用AJAX()
禁用click事件中的按钮,并在请求完成后再次启用它。请注意,请求是异步的(即“发送请求”立即返回),因此必须注册一个函数,该函数在得到答案时调用
在jQuery中,请参阅load()
函数和成功方法,以及可以使用AJAX()
点击的各种AJAX事件。如果您在jQuery中,amibusy
将是jQuery.active
,其中包含当前活动的AJAX请求计数,如下所示:
if(jQuery.active > 0) { //or $.active
alert('Request in Progress');
}
请记住,在jQuery 1.4.3中,这将变成。如果您在jQuery中,amibusy
将是jQuery.active
,其中包含当前活动AJAX请求的计数,如下所示:
if(jQuery.active > 0) { //or $.active
alert('Request in Progress');
}
请记住,在jQuery 1.4.3中,这变成了。我想知道您的“do请求”逻辑。每当我做这样的调用时,它们总是异步的,这意味着我会关闭请求,然后当响应到来时,另一个函数会处理它。在这种情况下,它会在设置回调处理程序后完成对该函数的处理,并在请求真正到来之前再次将amibusy的值设置回false您需要在处理程序中为post回调设置该变量。我想知道您的“do请求”逻辑。每当我做这样的调用时,它们总是异步的,这意味着我会关闭请求,然后当响应到来时,另一个函数会处理它。在这种情况下,它会在设置回调处理程序后完成对该函数的处理,并在请求真正到来之前再次将amibusy的值设置回false您需要在处理程序中为post回调设置该变量。您可以使用async
变量吗?
asyncBoolean默认值:true
默认情况下,将发送所有请求
异步(即设置为true
默认情况下)。如果需要同步
请求时,将此选项设置为false。
跨域请求和数据类型:
“jsonp”请求不支持
同步操作。请注意
同步请求可能会暂时停止
锁定浏览器,禁用任何
请求处于活动状态时的操作
您可以使用async
变量吗?
asyncBoolean默认值:true
默认情况下,将发送所有请求
异步(即设置为true
默认情况下)。如果需要同步
请求时,将此选项设置为false。
跨域请求和数据类型:
“jsonp”请求不支持
同步操作。请注意
同步请求可能会暂时停止
锁定浏览器,禁用任何
请求处于活动状态时的操作
请不要使用此选项,它会在AJAX请求运行时无故锁定浏览器,应尽可能避免使用async:true
。啊!感谢headup:)请不要使用此选项,它会在AJAX请求运行时无故锁定浏览器,应尽可能避免使用async:true
。啊!谢谢你的介绍:)