jQuery Ajax 请求重复执行的解决方案

阿涛姑娘_9600

阿涛姑娘_9600

2026-11-03

360人浏览

原创

jQuery Ajax 请求重复执行的解决方案

本文详解 jQuery Ajax 调用两次的根本原因及正确修复方法:避免内联 onclick 与 jQuery 事件绑定共存导致的重复触发,推荐统一使用 $(document).ready() + .click() 绑定,并移除 HTML 中冗余的 onclick 属性。

本文详解 jquery ajax 调用两次的根本原因及正确修复方法:避免内联 `onclick` 与 jquery 事件绑定共存导致的重复触发,推荐统一使用 `$(document).ready()` + `.click()` 绑定,并移除 html 中冗余的 `onclick` 属性。

在实际开发中,jQuery Ajax 请求意外触发两次是一个常见但易被忽视的问题。其根本原因往往并非 Ajax 本身逻辑错误,而是事件绑定方式冲突所致——当同时存在 HTML 内联 onclick 属性和 jQuery 动态绑定(如 $('#btnSave2').click(...))时,一次点击会同时触发两个独立的事件处理器,从而导致 $.ajax() 执行两次。

以下为典型错误写法(问题源头):

<input type="button" id="btnSave2" value="Save" onclick="Event(1)" class="btn btn-primary col-lg-12">
// ❌ 错误:未加 document ready 包裹,且与 onclick 共存
function Event(loop) {
  debugger;
  $.ajax({
    method: "POST",
    url: "UpEven.aspx",
    data: { slno: EventNo[0] }
  }).done(function(msg) {
    debugger;
  });
}

该写法存在两大隐患:

  • onclick="Event(1)" 在页面加载时即注册一次调用;
  • 若后续又执行 $('#btnSave2').click(Event)(或类似绑定),则再次注册一个监听器;
  • 最终点击按钮 → 触发两次 Event(1) → 发起两次 Ajax 请求。

✅ 正确做法是 统一事件管理入口,彻底移除内联行为:

第一步:清理 HTML,删除 onclick 属性

jQuery 1.12.4
jQuery 1.12.4

jQuery 1.12.4是jQuery 1.x系列的最后一个正式稳定版本,由jQuery团队于2016年发布。该版本主要面向需要兼容旧版浏览器环境的网站和Web应用,尤其适用于仍需支持Internet Explorer 6、Internet Explorer 7、Internet Explorer 8等老旧浏览器的项目。

下载
<input type="button" id="btnSave2" value="Save" class="btn btn-primary col-lg-12">

第二步:在 DOM 就绪后绑定事件(推荐标准写法)

$(document).ready(function() {
  $('#btnSave2').click(function() {
    Event(1);
  });
});

function Event(loop) {
  debugger;
  $.ajax({
    method: "POST",
    url: "UpEven.aspx",
    data: { slno: EventNo[0] }
  })
  .done(function(msg) {
    debugger;
    // ✅ 建议在此处添加成功反馈,如提示框或 UI 状态更新
    alert("保存成功!");
  })
  .fail(function(xhr, status, error) {
    console.error("Ajax 请求失败:", error);
    alert("保存失败,请重试。");
  });
}

? 关键注意事项:

  • ✅ 必须将 jQuery 事件绑定包裹在 $(document).ready() 或简写 $(function(){...}) 中,确保 DOM 元素已加载完成;
  • ✅ 函数名大小写需一致(原文中 event() 与 Event() 混用易引发 ReferenceError,应统一为 Event);
  • ✅ 避免在全局作用域直接调用 Event(1),防止页面加载时误执行;
  • ✅ 推荐为 Ajax 添加 .fail() 回调,提升错误可追踪性;
  • ⚠️ 若项目已使用其他框架(如 Vue/React),应优先采用其响应式事件机制,而非混合 jQuery 绑定。

通过以上重构,可确保每次点击仅触发一次 Event(1),进而保障 Ajax 请求的幂等性与用户体验一致性。

相关专题

更多
ajax教程
ajax教程

php中文网为大家带来ajax教程合集,Ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。php中文网还为大家带来ajax的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.14

3240

4

ajax中文乱码解决方法
ajax中文乱码解决方法

ajax中文乱码解决方法有设置请求头部的字符编码、在服务器端设置响应头部的字符编码和使用encodeURIComponent对中文进行编码。本专题为大家提供ajax中文乱码相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.31

360

5

ajax传递中文乱码怎么办
ajax传递中文乱码怎么办

ajax传递中文乱码的解决办法:1、设置统一的编码方式;2、服务器端编码;3、客户端解码;4、设置HTTP响应头;5、使用JSON格式。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.15

3053

5

ajax网站有哪些
ajax网站有哪些

使用ajax的网站有谷歌、维基百科、脸书、纽约时报、亚马逊、stackoverflow、twitter、hacker news、shopify和basecamp等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.09.24

1161

6

Tailwind CSS 如何制作导航栏和卡片
Tailwind CSS 如何制作导航栏和卡片

用 Tailwind CSS 制作导航栏和卡片,可先搭建语义化结构,再组合 Flex、Grid、间距、圆角与阴影类。这里整理横向导航、移动端菜单、卡片网格及悬停效果的相关文章,帮助你把常见页面组件做得清晰且适配不同屏幕。

2026.11.03

0

17

Tailwind CSS 响应式布局怎么写
Tailwind CSS 响应式布局怎么写

Tailwind CSS 响应式布局通常从移动端样式写起,再用 sm、md、lg 等前缀调整不同屏幕宽度下的网格、间距和导航。本专题整理断点配置、Grid 与 Flex 自适应布局及常见溢出问题,帮助你逐步完成多设备适配。

2026.11.03

0

19

Tailwind CSS 常用类名怎么记
Tailwind CSS 常用类名怎么记

Tailwind CSS 类名很多,先按布局、间距、文字、颜色和状态分组记忆,再通过官方文档检索具体写法。本专题结合类名排序、动态拼接失效、自定义实用类等问题,帮助你建立常用类名的速查方法。

2026.11.03

0

12

码上飞入口地址合集
码上飞入口地址合集

本专题汇总了码上飞(CodeFlying)的官方入口地址合集,涵盖官网主站及网页版在线使用入口,支持注册登录后直接在线体验零代码AI应用生成。同时整理了APP端下载渠道与小程序入口,助你快速访问平台,通过自然语言描述需求即可生成应用、小程序或网站。

2026.11.03

0

10

Uvicorn 报错与问题解决教程
Uvicorn 报错与问题解决教程

本专题汇总了Uvicorn服务器常见问题与报错解决的教程合集,涵盖启动失败、端口占用、模块导入错误、事件循环冲突及热重载失效等典型故障的排查思路。同时整理了多进程与Worker配置、SSL/HTTPS证书报错、跨域与代理配置等实战解决方案,助你快速定位并解决Uvicorn运行中的各类问题。

2026.11.02

20

14

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
jQuery官方API文档
jQuery官方API文档

共0课时 | 0人学习

jQuery 教程
jQuery 教程

共42课时 | 16.7万人学习

HTML+CSS基础与实战
HTML+CSS基础与实战

共132课时 | 19.5万人学习