我正在使用JavaScript(使用Jquery)构建到后端系统的接口。
系统将“接口”本身“托管”为网页,并通过$ .ajax调用与其进行通信。
当我在http://localhost:4242
打开界面时,将api主机($ .ajax调用的url值)设置为http://localhost:4242/api
并尝试$ .ajax调用,它将超时。
这似乎是因为两个地址相同,因为如果我将它们中的任何一个更改为本地IP地址或主机名,或者从html文件打开接口,请求将按预期工作。
这是$ .ajax函数的限制,还是其他什么?
编辑:更多信息!
$.ajax({error: function(jqXHR,textStatus,errorThrown){ //stuff }})
并且errorThrown =='timeout'好的..如果我将类型从POST更改为GET,突然它就像魅力一样。 WUT?
我认为它可能必须使用'jsonp'数据类型,因为它用于跨域通信,但如果域相等则更改为'json'没有效果。
答案 0 :(得分:0)
$ .ajax没有这样的限制,否则生活在这个世界上是不切实际的:)
如果您确定要发送请求(请检查Chrome或Firebug中的“网络”标签!)并且确实超时,那么肯定,这很可能是您的后端问题,但这听起来很奇怪。当我从html文件中打开界面时,你的意思是什么?
答案 1 :(得分:0)
我们现在已经解决了这个问题。事实证明,如果使用dataType: 'jsonp'
而不是跨域请求,则需要将crossDomain选项设置为true。这几乎是合乎逻辑的。
为什么它与type: 'GET'
一起正常工作仍然是一个谜。