【发布时间】:2013-12-20 18:34:39
【问题描述】:
我正在使用 JavaScript(使用 Jquery)构建后端系统的接口。
系统将界面本身“托管”为网页,以及通过 $.ajax 调用与之通信的 api。
当我打开http://localhost:4242 的接口时,将api 主机($.ajax 调用的url 值)设置为http://localhost:4242/api 并尝试$.ajax 调用,它会超时。
这似乎是因为两个地址是相等的,因为如果我将它们中的任何一个更改为本地ip地址或主机名,或者从html文件中打开界面,请求都会按预期工作。
这是 $.ajax 函数的限制,还是其他原因?
编辑:更多信息!
- 后端永远不会收到请求
- ajax 请求确实出现在网络控制台中(挂起,超时后取消)
-
$.ajax({error: function(jqXHR,textStatus,errorThrown){ //stuff }})在达到超时值后触发 textStatus 和 errorThrown both == 'timeout'
好的.. 如果我将类型从 POST 更改为 GET,它会突然发挥作用。哇?
我认为“jsonp”数据类型可能必须如此,因为它用于跨域通信,但如果域相等则更改为“json”没有效果。
【问题讨论】:
-
只要协议、域和端口匹配,根本不成问题。尝试只使用 URL /api 看看是否有效。
-
超时是什么意思?您收到 TimeOut 错误或请求未返回任何内容?如果你没有得到任何结果,可能是因为 URL 响应缓存在浏览器上
-
我添加了更多信息:最值得注意的是,如果类型是“GET”而不是“POST”,则请求成功。