【发布时间】:2009-08-22 10:00:46
【问题描述】:
我想在页面上运行一些代码。我的问题是我不希望它在任何一点上运行不止一次。它可以运行多次,但不能在另一个自身实例运行时运行。我正在使用 jQuery 并加载 ajax 内容。
我只需要一些东西来防止用户点击数百次并建立队列和 ping 我的服务器堆。
这可能吗?
谢谢。
【问题讨论】:
标签: javascript jquery
我想在页面上运行一些代码。我的问题是我不希望它在任何一点上运行不止一次。它可以运行多次,但不能在另一个自身实例运行时运行。我正在使用 jQuery 并加载 ajax 内容。
我只需要一些东西来防止用户点击数百次并建立队列和 ping 我的服务器堆。
这可能吗?
谢谢。
【问题讨论】:
标签: javascript jquery
如果它只是在不同区域调用的一个函数,听起来你只是想要某种基本的信号量测试,例如:
isRunning = false;
function whatever() {
if (!isRunning) {
isRunning = true;
$.ajax(...., function() {
isRunning = false;
});
}
}
这个question 看起来有点相关。
重新编辑您的编辑:还值得注意的是,您在此处为避免大量请求而采用的任何 javascript 解决方案都应在服务器端另外考虑。
【讨论】:
只保留一个变量来标记它是否正在运行:
var running = true;
... complete: function() { running = false; }
【讨论】:
我认为,如果您在 ajax 请求正在进行时禁用控件会更加用户友好。
这样不仅可以避免大量点击,而且用户也会知道杀死鼠标是没有意义的。
【讨论】: