javascript - 让 ajax 只调用一次

标签 javascript jquery ajax

我有一个 ajax 调用被多次触发。

我使用了e.stopImmediatePropagation()return false来防止它多次触发。是否有另一种可靠的方法来防止 ajax 多次调用。

$(document).on('click', '#button1', function(e){
$.ajax({
    url: 'http://www.page.com',
    data: data,
    method: 'POST',
    success: function(data){

   },
   error: function(err){

   }
});
  e.stopImmediatePropagation();
  return false;
});

最佳答案

您可以使用 jQuery .one()

  $(document).one('click', '#button1', function(e){
    $.ajax({
        url: 'http://www.page.com',
        data: data,
        method: 'POST',
        success: function(data){

        },
        error: function(err){

        }
    });
  });

var n = null;
$(document).one('click', '#button1', function(e){
$.ajax({
    url: 'https://gist.githubusercontent.com/anonymous/9a6997f09de9b68c59b2/raw/f7d7b756005ad6d2b88cf0211f78a2990d7d2dc7/content.json',
    data: {},
    method: 'HEAD',
    success: function(data, textStatus, jqxhr) {
      console.log(jqxhr.getAllResponseHeaders())
      $("body").append("<br>textStatus: " + textStatus + "<br>count: " + ++n)
   },
   error: function(err){

   }
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button id="button1">click</button>

关于javascript - 让 ajax 只调用一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26396924/

相关文章:

javascript - 使用 Cypress 在命令行中传递自定义 API key

javascript - jQuery getJson 函数内填充的数组范围

javascript - 如何使用 React Native 在 if 条件内处理 Prop 导航

jquery - ajaxStart 在 Google Chrome 中忽略 .show()

javascript - 如何使带有2个值的ajax 'data'分别获取每个值?

javascript - Webpack 在开始构建之前需要很长时间才能启动

javascript - Bootstrap-Switch 与 Uniform js 的相互干扰

javascript - 如何为可拖动元素添加间隔

javascript - javascript 和 HTML 是不可能分开的吗?

php - Yii 中的下拉列表值未正确更新