即使我单击一次,AJAX 也会多次调用

Posted

技术标签:

【中文标题】即使我单击一次,AJAX 也会多次调用【英文标题】:AJAX is calling multiple times even when i click once 【发布时间】:2021-08-27 06:07:44 【问题描述】:

我的 html 代码:

<div class="filter-section">
  % for key, values in positions.items %
    <h3>key</h3>
    % for position in values %
      <a id="view-job-position.id" style="cursor:pointer" onclick="getPositionInfo(position.id)" class="list-row">
       <span class="list-item">position.position_name</span>
      </a>
     % endfor %
    % endfor %
</div>

JS代码:

<script type="text/javascript">
    function getPositionInfo(id)
       var j_id = "#view-job-" + id;
       $(j_id).on('click', function(e) 
        e.preventDefault();
           $.ajax(
             url : '/apply_now/',
             type: 'POST',
             data:
               job_id : id,
               csrfmiddlewaretoken: ' csrf_token '
              ,
              success:function(data)
                alert(JSON.stringify(data));
              
             );
        );
    
</script>

问题: 第一次单击时没有任何反应,但从第二次单击开始,它会调用多次。 示例: 第一次点击 -> 没有电话 第二次点击 -> 调用 2 次 第三次点击 -> 调用 3 次 第 n 次点击 -> 调用 n 次

For 3rd click ajax called 5 times

【问题讨论】:

【参考方案1】:

您在 HTML 中定义了一个onclick="getPositionInfo(position.id)"。此函数getPositionInfo 然后在此处调用$(j_id).on('click', function(e) 后立即将另一个onclick 添加到&lt;a&gt; 标记。所以下次你点击它时,你又添加了另一个onclick,同时也调用了你之前添加的onclick

【讨论】:

以上是关于即使我单击一次,AJAX 也会多次调用的主要内容,如果未能解决你的问题,请参考以下文章

即使已经实例化了 ManagedBean(例如在 AJAX 调用上),也会调用 @PostConstruct 方法[重复]

Swift Xib UiView BottomSheet 被多次调用

如果页面未刷新,则多个ajax调用按钮单击jquery

装饰器标记一个方法执行不超过一次,即使被多次调用

即使会话过期,Laravel API 调用也会继续

即使标题正确,POST 调用也会返回 CORS 错误