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

POST请求在Swagger运行正常但JavaScript或jQuery调用失败问题

问题原因及修复方案

代码存在的核心问题

  • 语法错误:beforeSend回调函数缺少闭合的花括号与结尾逗号,导致整段AJAX配置语法解析失败。
  • 请求体格式不匹配:你配置了contentType: "application/json",但直接传入了JS对象作为data参数,jQuery默认会将JS对象序列化为application/x-www-form-urlencoded格式的字符串,和你声明的请求格式不符,后端无法正常解析参数。
  • 错误设置跨域响应头:access-control-allow-headers是服务端返回的响应头,前端在请求中主动设置该字段完全无效,反而会在跨域预检请求中将该字段加入Access-Control-Request-Headers列表,如果后端没有允许该自定义头,会直接触发跨域失败。
  • 非致命配置冗余:dataType: "text"和接口实际返回的JSON格式不符,虽然不会直接报错,但会导致你需要手动解析响应体,建议修改为json或者直接删除该配置让jQuery自动识别。
  • 补充说明:Swagger测试正常不代表跨域配置适配前端请求,Swagger页面一般和接口服务部署在同域下,或者后端单独适配了Swagger的请求规则,不会触发跨域校验。

修复后的代码示例

const values = {
    clientId: '9d9d865a-96c6-41ff-9842-89101c8ccc7a'
};

$.ajax({
    url: "https://-----.-----------.ca/Asset/EstimatedWaitTime",
    type: "POST",
    // 手动序列化为JSON字符串匹配contentType配置
    data: JSON.stringify(values),
    contentType: "application/json",
    // 适配接口返回的JSON格式
    dataType: "json",
    success: function(response) {
        console.log('请求成功', response);
    },
    error: function(jqXHR, textStatus, errorThrown) {
        console.log(textStatus, errorThrown);
    }
});

如果修复后仍然出现跨域报错,需要联系接口服务端开发者配置CORS跨域规则,允许你前端页面所在的域名发起请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:21:03