gpt4 book ai didi

javascript - Ajax 多次发送请求

转载 作者:行者123 更新时间:2023-12-03 04:24:05 24 4
gpt4 key购买 nike

我在使用 AJAX 时遇到了一个大问题:
在我的页面上的 AJAX 请求发送后,下一个请求会发送多次,并且按钮认为它们被按下了多次。
现在我在这里和互联网上搜索,但无法解决。到目前为止,代码中进行了以下更正:

  • 所有代码都在一个名为 AjaxInit() 的自己的函数中
  • AjaxInit() 在 $(window).load 和 $(document).ajaxStop 上调用
  • 所有元素都有其到 body 的绑定(bind)器(例如 $("body").on("click","#btn-main", function)

现在我尝试使用 $("body").find("*").off() 解除所有事件的绑定(bind),但这也没有帮助。
我知道我做错了什么,但我不知道是什么。
Ajax 调用完成后如何正确重新绑定(bind) everythink?如何确保对象绑定(bind)(例如 $("#news").sortable({}))在第一次 ajax 调用后正常工作?
我很想对页面上的所有回调使用 AJAX,但目前最好的解决方案似乎是在每次 ajax 调用后重新加载整个页面,这会很糟糕。

如有任何帮助,我们将不胜感激。

编辑:添加代码

$(window).load(function() {
AjaxInit();
});

$(document).ajaxStop(function() {
AjaxInit();
});

function AjaxInit() {
$("body").on("click", "#btn-admin-main", function(e) {
console.log("Admin clicked");
e.handled = true;
e.preventDefault();
LoadDynamicContent("/Edit/");
});


}

function LoadDynamicContent(path) {
//Nach oben Scrollen
$('html,body').scrollTop(0);
$.ajax({
type: 'GET',
url: path,
success: function(response) {
var html_response = $(response).find('#dynamic_content').html();
$("#dynamic_content").html(html_response);
}
});
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<a class="sidebutton-full" id="btn-main">Edit</a>
<div id="dynamic_content"></div>

最佳答案

可以解除按钮的点击事件的绑定(bind)

$(document).unbind('click').on("click", "#btn-main", function () {
//do stuff here
});

或者

$(document).off("click", "#btn-news").on("click", "#btn-news", function () { 

});

如果您的表单提交命中两次,那么您需要稍微更改一下代码

$("#form_news_sort").submit(function(e){
e.preventDefault()
// do stuffer here
.
.
.
.
return false;
})

如果您仍然遇到错误,请在下面发表评论

关于javascript - Ajax 多次发送请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43819886/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com