Jquery 我的客户每次单击都会多次请求相同的ajax。我怎样才能防止呢?

Jquery 我的客户每次单击都会多次请求相同的ajax。我怎样才能防止呢?,jquery,ajax,Jquery,Ajax,我正在创建一个使用三种不同ajax的门户,通过单击自动生成菜单的链接触发 问题是,当我点击菜单的许多链接时,我的浏览器需要更多的时间和内存来处理这些请求 我的问题在chrome开发工具的网络选项卡中非常清楚 第一次单击时,每个ajax页面只收到一个请求,但第二次我收到两个相同ajax页面的请求。 第三次是4个请求,然后是8个、16个、32个,依此类推 我怎样才能避免呢 这是我的javascript页面的代码: $(document).ready(function () { var ajaxse

我正在创建一个使用三种不同ajax的门户,通过单击自动生成菜单的链接触发

问题是,当我点击菜单的许多链接时,我的浏览器需要更多的时间和内存来处理这些请求

我的问题在chrome开发工具的网络选项卡中非常清楚

第一次单击时,每个ajax页面只收到一个请求,但第二次我收到两个相同ajax页面的请求。 第三次是4个请求,然后是8个、16个、32个,依此类推

我怎样才能避免呢

这是我的javascript页面的代码:

$(document).ready(function () {

var ajaxser;
var ajaxfun1;
var ajaxfun2;


$("a.servicelink").one("click",function () {

    $("#ajaxloader").show();


    var select = $(this).attr("ser:id");


    ajaxser = $.ajax({
        url: "ajax/ajaxservicetab.php",
        type: 'post',
        data: {'select': select},
        success: function (data)
        {
            var servicetable = data;
            $("#content").html(servicetable);


            ajaxfun1 = $.ajax({
                url: "ajax/ajaxfunctionmenu.php",
                type: 'post',
                data: {'select': select},
                success: function (data)
                {
                    var functionmenu = data;
                    $("#functionality").html(functionmenu);
                    $("#ajaxloader").hide();
                }
            });
        }

    });



$("a.servicelink").unbind();     

});
$("a.functionlink").click(function () {
    $("#ajaxloader").show();



    var funid = $(this).attr("fun:id");
    var appid = $(this).attr("app:id");
    var funnome = $(this).attr("nom:id");

    ajaxfun2 = $.ajax({
        url: "ajax/ajaxfunctiontab.php",
        type: 'post',
        data: {'funid': funid, 'appid': appid, 'funnome': funnome},
        success: function (data)
        {
            var functiontable = data;
            $("#content").html(functiontable);

            $("#ajaxloader").hide();

        },
        complete: function () {
            $("a.servicelink").unbind(); 
            $("a.servicelink").off(); 
            ajaxser.abort();
        }
    });

$("a.functionlink").unbind(); 

});
编辑:

通过单击“a.servicelink”,我调用了两个ajax:ajaxser和ajaxfun1

使用ajaxfun1调用的ajax页面包含调用ajaxfun2的“a.functionlink”

编辑2:

我通过添加取消绑定功能来编辑代码。 改变之处在于,第二次单击ajax时只调用一次,但第三次再次调用两次,然后是4次,以此类推


EDIT3:添加了“完整”方法,没有差异。代码已更新。

您可以尝试添加完整的方法

complete: function() {
        // Disable (a.servicelink) click event here and re-enable after callback.
}

听起来好像每次单击都会以某种方式重新绑定所有事件。试试
.unbind(“click”)
@epascarello是的,但其中的“ser:id”值始终是最后一个值。@Punit Gajjar。在哪里?您也可以尝试$(this).unbind();在ajax调用之后,例如,
$(“#元素”).bind(“单击”,function(){//do stuff here$(this).unbind();}
我添加了:complete:function(){$(.servicelink”).unbind();$(.servicelink”).off();ajaxser.abort()}但这并没有改变任何事情。我错过了什么吗?