防止AJAX通话每次触发两次

时间:2019-04-19 13:27:44

标签: php jquery ajax

我正在使用JQuery 3.3.1构建Web应用程序。似乎每次我进行ajax调用时,请求都会发送两次。我可以告诉您,因为我尝试在服务器端记录请求。我尝试了类似问题的解决方案,但它们似乎无济于事。

我将ajax调用与click事件分开了,因此不会发生,因为click事件被注册了两次。

$(function() {
    console.log("hi");

    var request = {};
    request["user_id"] = 1;
    request["date"] = new Date();
    request["assignments"] = [{
        "point_count" : 1,
        "skill_mnemo" : "SKILL_FARM"
    }];

    $.ajax({
            type: "POST",
            dataType: "json",
            mimeType: "application/json",
            url: "./api/update_skill_point.php",
            enctype: 'multipart/form-data',
            data: request,
            async: false,
            cache: false,
            success: function(result) {
                console.log(result);
            }
    });
});

2 个答案:

答案 0 :(得分:0)

您必须通过以下方式调试此代码:

  1. 检查hii打印到控制台的次数。
  2. $.ajax的开头添加断点。然后检查调用堆栈。
  3. 进入“网络”标签,并在启动程序列中分析相应ajax调用的调用堆栈。(对于Chrome)

希望对您有帮助。

答案 1 :(得分:0)

不要使用

(function(){})

如果我们使用(function(){}),它将在DOM准备就绪时自动调用,然后在需要时再次调用。

尝试

function ajaxCall()
{
 console.log("hi");

    var request = {};
    request["user_id"] = 1;
    request["date"] = new Date();
    request["assignments"] = [{
        "point_count" : 1,
        "skill_mnemo" : "SKILL_FARM"
    }];

    $.ajax({
            type: "POST",
            dataType: "json",
            mimeType: "application/json",
            url: "./api/update_skill_point.php",
            enctype: 'multipart/form-data',
            data: request,
            async: false,
            cache: false,
            success: function(result) {
                console.log(result);
            }
    });
}

$(document).ready(){
 ajaxCall();
}

通过这种方式,您可以控制ajax调用, 现在您可能已经知道了如何处理,如果不让我知道,我将尝试解释更多。