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

跨域AJAX请求JSON数据报错:原URL问题排查咨询

你的跨域AJAX调用失败原因解析

嘿,我来帮你捋清楚这个问题——你的代码本身写法没大问题,核心问题出在目标服务器不支持JSONP协议,咱们一步步拆解:

先搞懂JSONP的核心要求

JSONP不是传统意义上的AJAX,它是靠动态加载<script>标签绕开跨域限制的,这就要求服务器必须能识别callback参数,并且把返回的JSON数据包裹在这个callback指定的函数里返回。举个例子,你请求json_url_1带了callback=parseResponse,正常的JSONP响应得是这样的:

parseResponse({"test": "data", ...})

但你用的那个operation-wigwam.ingress.com:8080服务器明显没做这个处理——它返回的是纯JSON字符串,不是包裹在函数里的合法JS代码,浏览器自然没法解析,直接触发error回调。

对比你成功的示例地址

你用的jsonplaceholder.typicode.com是专门做测试用的服务,它天生支持JSONP:只要你带callback参数过去,它就自动把JSON包装成函数调用返回,所以你的AJAX能顺利拿到数据。

再看你两个真实请求的具体问题

  • json_url_1:虽然加了callback=parseResponse,但服务器完全不理这个参数,返回的还是纯JSON,浏览器加载这个script内容时,因为不是合法的函数执行代码,直接报错。
  • json_url_2:连callback参数都没加,服务器直接返回纯JSON,更不符合JSONP的要求,肯定失败。

给你的解决方向

如果非要用这个服务器的接口,有两个路子:

  • 找服务器开发同学,让他们加上JSONP支持,也就是处理请求里的callback参数,把返回的JSON包成函数调用格式。
  • 如果服务器支持CORS(跨域资源共享),你可以把dataType改成json,然后根据服务器配置调整withCredentials参数,但前提是服务器已经配置了正确的CORS响应头(比如Access-Control-Allow-Origin)。

对了,JSONP本身只支持GET请求,这部分你的代码是对的,不用改~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:09:40