ajax重复提交问题

批量给多个按钮绑定了ajax事件,多个按钮公用一个ajax方法。但是传递参数不一样,怎么做能防止每个按钮重复触发ajax请求

阅读 3.6k
3 个回答

给每个按钮绑定一个 ajaxStart 事件,每次刚开始请求 AJAX 的时候给 body 或者任意一个元素(只要大家都能访问到就行,成为监测元素)添加一个 ajax 属性为 true,在请求成功的回调函数里把这个元素的 ajax 属性改为 false。

点击按钮时判断一下那个监测元素的 ajax 属性,如果为 true 说明目前有同类型 ajax 在进行,弹出相关提示;如果是 false 就可以正常发送请求。

给每个按钮用.data()绑一个信号变量,提交之前检查一下这个变量,提交之后更改下变量就行了。

    <a href="javascript:;" class="btn">按钮1</a>
    <a href="javascript:;" class="btn">按钮2</a>
    <a href="javascript:;" class="btn">按钮3</a>
    <a href="javascript:;" class="btn">按钮4</a>
    <script>
    $('.btn').click(function(event) {
        var self = $(this),
            clicked = self.data('clicked')
        if (clicked) {
            return alert('已点击过');
        }
        self.data('clicked', 'true')
        alert(self.text());
    });
    </script>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题