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