我有一个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);
}

最佳答案

基本上,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);
     });

}

10-01 07:18