防止AJAX调用每次触发两次

问题描述 投票:1回答:2

我正在使用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);
            }
    });
});
php jquery ajax
2个回答
0
投票

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

  1. 检查hii打印到控制台的次数。
  2. $.ajax开始时添加断点。然后检查调用堆栈。
  3. 检查网络选项卡并分析启动器列中的调用堆栈以获取相应的ajax调用。(对于Chrome)

希望它对你有所帮助。


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调用,现在你可能知道如何处理,如果不让我知道,我会尝试解释更多。

© www.soinside.com 2019 - 2024. All rights reserved.