You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用jQuery发送Ajax时页面无刷新,a与button标签行为差异问题

问题分析与解决方案

先给你拆解核心差异和问题根源:

  • 你的<button>标签没指定type属性,浏览器默认会把它识别为type="submit"——这意味着点击它时,除了执行nextPage()发送AJAX请求,还会触发表单的默认提交行为,直接导致页面刷新!
  • 而<a>标签这里没设置href属性,它的默认跳转行为本来就不会触发,所以只有AJAX请求执行,页面自然保持不变。

针对button的页面刷新问题,给你两个简单可行的解决办法:

方案1:给button明确指定type="button"

直接修改button标签,声明它是普通按钮而非提交按钮:

<button type="button" onclick="nextPage()">test</button>

这样浏览器就不会触发表单提交的默认行为,AJAX请求完成后页面也能保持稳定。

方案2:在函数中阻止默认事件

如果不想改动button标签,可以在调用函数时传入事件对象,然后在函数里阻止默认行为:

<button onclick="nextPage(event)">test</button>

对应的JS函数修改如下:

function nextPage(e) {
  // 阻止按钮的默认提交行为
  e.preventDefault();
  $.ajax({
    type: 'post',
    url: $('#searchform').attr('action'),
    // 你的其他AJAX配置项...
  });
}

另外你提到“注释掉的代码能正常运行”,大概率那段注释里包含了阻止默认行为的逻辑(比如return false或者preventDefault),所以当时没有触发表单提交,页面也就不会刷新了。

内容的提问来源于stack exchange,提问作者JXmb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:32:55