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

AJAX POST请求success函数未触发的原因及修复方案

解决AJAX POST请求Stalled且Success函数不触发的问题

看起来你遇到的情况很典型:数据已经送达服务器,但前端的success回调始终没执行,Chrome网络面板还显示连接stalled、提示"connection is not finished yet"——这大概率是服务器响应不完整或者前端AJAX配置有遗漏导致的。结合你的代码片段,我给你几个具体的排查和解决方向:

1. 先补全并完善AJAX配置

你的代码里type: ...是不完整的,必须明确指定为'POST',而且一定要加上error回调(很多时候success不触发是因为请求走到了error分支,但你没加就看不到原因),同时别忘了把modif作为请求数据传入:

var modif = { 
  CRN: $("#DIAS").parent().parent().parent().children()[0].children[0].innerText, 
  DIAS: $("#DIAS").val(), 
  start_hr: $("#STRHR").val(), 
  end_hr: $("#ENDHR").val(), 
  title: $("#TITLE").val() 
} 

$.ajax({ 
  url: '/cmanager/edit', 
  dataType: 'text', 
  type: 'POST', // 必须明确指定POST方法
  data: modif,  // 传入构造好的请求数据
  success: function(response) {
    console.log('请求成功:', response);
  },
  error: function(xhr, status, error) {
    // 这个回调能帮你捕获所有失败场景
    console.log('请求出错详情:', status, error);
    console.log('HTTP响应状态码:', xhr.status);
  }
});

先加上error回调,打开浏览器控制台看输出,这是最快定位问题的第一步。

2. 检查服务器端是否正确返回响应

服务器虽然接收了数据,但可能没有完成响应流程:

  • 查看服务器日志,确认处理请求时有没有抛出异常、超时,或者是否忘记结束响应(比如某些后端框架需要手动调用res.end()/response.send()这类方法,或者输出缓冲没刷新)
  • 在Chrome网络面板里查看该请求的响应详情:确认HTTP状态码是200(或其他成功状态码),响应体是符合dataType: 'text'要求的纯文本,而且Content-Length字段和实际响应体长度匹配(如果没有Content-Length,要确认服务器用了分块传输编码且正确结束了分块)

3. 排查请求被挂起的原因

Chrome里的"stalled"状态通常表示请求被挂起,常见原因有:

  • 浏览器并发连接限制:同一域名下同时发起的请求数超过了浏览器限制(一般是6个),导致后续请求排队
  • 服务器端限流/防火墙拦截:服务器可能对请求频率做了限制,或者防火墙截断了响应连接

4. 简化数据结构,排除DOM取值问题

你的CRN是通过多层DOM嵌套获取的innerText,可能意外包含了换行、空格或特殊字符,导致数据解析异常:

  • 先把CRN换成固定测试值,比如CRN: 'test123',如果请求正常了,再去优化DOM取值的代码(比如用更可靠的.closest()和.text().trim()):
// 替代多层parent的更简洁写法
CRN: $("#DIAS").closest('tr').find('td:first').text().trim()

5. 确认是否存在跨域/CORS问题

虽然你的URL是相对路径,但如果部署时前端和服务器不在同一端口/域名,要确认服务器是否配置了正确的CORS响应头,否则浏览器会拦截响应,导致success不触发。

先从添加error回调开始排查,控制台的错误信息会帮你快速锁定问题!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:42:29