jQuery .ajax()调用主机等于当前页面失败

时间:2013-12-05 11:53:22

标签: jquery ajax

我正在使用JavaScript(使用Jquery)构建到后端系统的接口。

系统将“接口”本身“托管”为网页,并通过$ .ajax调用与其进行通信。

当我在http://localhost:4242打开界面时,将api主机($ .ajax调用的url值)设置为http://localhost:4242/api并尝试$ .ajax调用,它将超时。

这似乎是因为两个地址相同,因为如果我将它们中的任何一个更改为本地IP地址或主机名,或者从html文件打开接口,请求将按预期工作。

这是$ .ajax函数的限制,还是其他什么?

编辑:更多信息!

  • 后端永远不会收到请求
  • ajax请求确实出现在网络控制台中(待处理,并在超时后取消)
  • 使用textStatus达到超时值后触发$.ajax({error: function(jqXHR,textStatus,errorThrown){ //stuff }})并且errorThrown =='timeout'

好的..如果我将类型从POST更改为GET,突然它就像魅力一样。 WUT?

我认为它可能必须使用'jsonp'数据类型,因为它用于跨域通信,但如果域相等则更改为'json'没有效果。

2 个答案:

答案 0 :(得分:0)

$ .ajax没有这样的限制,否则生活在这个世界上是不切实际的:)

如果您确定要发送请求(请检查Chrome或Firebug中的“网络”标签!)并且确实超时,那么肯定,这很可能是您的后端问题,但这听起来很奇怪。当我从html文件中打开界面时,你的意思是什么?

答案 1 :(得分:0)

我们现在已经解决了这个问题。事实证明,如果使用dataType: 'jsonp'而不是跨域请求,则需要将crossDomain选项设置为true。这几乎是合乎逻辑的。

为什么它与type: 'GET'一起正常工作仍然是一个谜。