Ajax不止一次发送请求

时间:2017-05-06 11:25:37

标签: javascript jquery ajax

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

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

现在我尝试使用$(“body”)解析所有事件。找到(“*”)。off(),但这也无济于事。
我知道我做错了什么,我只是不知道是什么。
在Ajax调用完成后,如何才能正确地重新绑定每个方面?如何在第一次ajax调用之后使对象绑定(例如$(“#news”)。sortable({}))正常工作?
我希望在我的页面上使用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>

1 个答案:

答案 0 :(得分:1)

您可以从按钮

取消绑定点击事件
$(document).unbind('click').on("click", "#btn-main", function () {
 //do stuff here
});

OR

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

 });

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

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

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