Javascript函数在运行时被再次调用
Javascript function being called again while it is still running
我有一个javascript函数,当用户单击按钮并执行向数据库添加一些数据的AJAX查询时调用该函数。然而,我一直在抱怨很多数据没有通过,我认为问题在于点击之间的时间间隔。当他们在点击之间等待足够长的时间时,数据总是能通过,但如果他们等待的时间不够长,那就是一个赌博。
所以我很确定问题是javascript函数在运行时再次被调用,这是我不应该允许的。是否有一种方法可以在函数开始时锁定用户的浏览器,并在AJAX结束后解锁它?我知道这可能会激怒我的用户,但我想不出其他解决办法。
这不是完全必要的,但这是我的javascript函数看起来像:
function addtolist(thisform, sdata)
{
var scntDiv = $('#p_data');
var request = $.ajax({ async: false, url: "php_addtolist.php", type: "POST", data: {data:sdata}, dataType: "html" });
request.done(function(msg) { outdata = parseInt(msg); });
$(outdata).appendTo(scntDiv);
}
您可以在调用该函数时禁用该按钮,然后使用complete
回调重新启用该按钮:
function addtolist(thisform, sdata)
{
$('#submit_btn').prop('disabled', true);
var scntDiv = $('#p_data');
var request = $.ajax({
async: false,
url: "php_addtolist.php",
type: "POST",
data: {data:sdata}, dataType: "html" },
complete: function() { $('#submit_btn').prop('disabled', false); }
);
request.done(function(msg) { outdata = parseInt(msg); });
$(outdata).appendTo(scntDiv);
}
基本上看起来outdata
是异步的。下面的方法可以解决问题。
function addtolist(thisform, sdata)
{
var scntDiv = $('#p_data');
var request = $.ajax({ async: false, url: "php_addtolist.php", type: "POST", data: {data:sdata}, dataType: "html" });
request.done(function(msg) {
outdata = parseInt(msg);
$(outdata).appendTo(scntDiv);
});
}
相关文章:
- 运行Infinite Scroll后调用函数时出现问题
- 如何从 MVC4 链接调用 Javascript 方法(错误 JavaScript 运行时错误:对象不支持此操作)
- 如何使用仅在运行时已知的变量名称调用 JavaScript 函数
- Ajax调用在本地返回json,但在服务器上运行时返回xml
- 当其他函数调用Javascript时运行我的代码
- 如何在node中编写事件发射器.js让你创建一个函数“myFunction”,然后在运行时调用成功或失败
- 函数不't在添加括号的情况下调用它时运行(即使它不需要参数)
- Javascript 调用在运行时 (asp.net) 期间不显示
- 如何在运行时单击按钮时调用函数,如下面的代码所示
- 使用 Primefaces 5.1 如何在运行时仅使用 javascript 更改按钮图标样式.(没有 AJAX 调用)
- 如何在每次调用对象时自动运行函数
- Signalr:如何调用一个 JavaScript 函数,其名称在运行时定义
- 是否可以仅在第一次运行时调用函数
- 每次 while 循环运行时调用 javascript,以从数据库中给出一个唯一的时间
- JS用字符串调用函数运行时内的函数
- 0x8000ffff JavaScript运行时错误对方法或属性访问的意外调用
- 在运行时从innerHtml中添加和调用javascript函数
- 为什么在运行时调用声明的函数
- 在运行时HTML元素上调用单击事件处理程序
- 脚本第一次运行时未调用函数