是的,我遇到了一个我以为没有的问题。
当您提交时,它会运行一个 javascript 函数,该函数会运行 ajax 调用。该函数的名称如下(函数中的第一行):
$('#submitWall').attr('disabled', true);
这非常有效,但对于速度更快的人来说效果不太好...我尝试非常快地单击/按回车键,并将其插入数据库 2-3 次。
我想阻止这种情况发生。正如我所说,我有上述内容,但并没有 100% 解决问题。
在 JS/jquery 或者 PHP 中是否有解决方案,所以有一个 1 秒的时间限制......?
这是我的功能:
function DoWallInsert(BuID, uID){
$('#submitWall').attr('disabled', true);
var wrapperId = '#wall_insert';
$.ajax({
type: "POST",
url: "misc/insertWall.php",
data: {
value: 'y',
BuID : BuID,
uID : uID,
message : $('#message').val()
},
success: function(msg){
$('#submitWall').attr('disabled', false);
$(wrapperId).prepend(msg);
$(wrapperId).children().first().slideDown('slow');
$('#message').val("");
}
});
}
最佳答案
我认为这里的问题是,由于javascript运行单线程,属性更改直到函数结束才生效。
如果您将Timeout设置为具有最小延迟的另一个函数,并让该函数执行所有其余的处理,并且可能还让第一个函数首先测试该属性,如果它已经被禁用,则进行救助,这可能会阻止这种情况。
由于 Javascript 是单线程,即使第一个函数在 gui 更新之前连续运行两次,第二个调用仍应将其视为已禁用并忽略您的点击。
首先检查属性可能就足够了,如果它被禁用,则退出函数。
if($('#submitWall').attr('disabled'))
return ;
关于PHP/JS : Preventing doubleinserting with function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4025199/