weixin_33721427 2018-11-29 14:45 采纳率: 0%
浏览 102

求助:Ajax请求不断增加一倍

我有一个网站,主页上有一个内容div,并使用ajax切换内容。但是,每当我在不同页面之间切换时,ajax都会使请求量翻倍。

这是处理页面切换的代码:

$(document).on('click','#sideNav a',function(e){ 
    e.preventDefault();
    var url = $(this).attr('href'); //get the link you want to load data from

    $.ajax({ 
     type: 'GET',
     url: url,
     success: function(data) { 
        $("#content").empty();
        $("#content").html(data); 
    } 
   }); 
   //window.history.pushState('object', 'New Title', url);
 });
});

假设现在我第一次尝试切换到此页面并创建新模板,那么ajax会向php发布一条帖子,在数据库中添加一个新条目;如果我在页面之间切换并返回到模板页面、创建一个新模板,那ajax会向php发送2个帖子,并创建了2个数据库条目;如果我再这样做一次,则会有4个帖子......依此类推。

使用ajax的每个函数都会发生这种情况。但是当我不单独通过内容div进入主页时,这些就不会发生,因此我怀疑切换页面的方式有些混乱。

PS:它实际上不是加倍,而是每次都添加一个请求。

更新:

我以某种方式对其进行了修复,但不确定具体是如何修复好的。这是我所做的事情:我在函数中添加了.off('click','#sideNav a')还将该函数放入单独的js文件。我觉得它每次都在重新加载脚本,但不确定是否完全修复了该脚本,希望对你有所帮助。

  • 写回答

2条回答 默认 最新

  • ?yb? 2018-11-29 14:50
    关注

    As a solution to this you could use off() to dettach the click event (if exist) before attaching :

    $(document).off('click','#sideNav a').on('click','#sideNav a',function(e){ 
        e.preventDefault();
        var url = $(this).attr('href'); //get the link you want to load data from
        $.ajax({ 
         type: 'GET',
         url: url,
         success: function(data) { 
            $("#content").empty();
            $("#content").html(data); 
        } 
       }); 
       //window.history.pushState('object', 'New Title', url);
     });
    });
    

    IMO the cause of this problem comes from the posted code when you call it multiple time every time you call it the event will be attached another time and so on.

    评论

报告相同问题?

悬赏问题

  • ¥15 数学的三元一次方程求解
  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题