子域REST调用在FF中不在IE中工作

时间:2012-04-19 18:39:38

标签: jquery html cross-browser cross-domain getjson

我有一个设计有引导程序的HTML页面,它调用REST服务来更新数据库的信息。这是javascript:

$.support.cors = true;

$.ajaxSetup ({
  // Disable caching of AJAX responses
  cache: false,
  async: false
});

$("#submitemail").click(function() {

$.getJSON('http://sub.mydomain.com/getinfo/'+ 
                 encodeURIComponent($('#emailaddress').val()), 
                 function(resp) {
                    //do something here
                  }); 
});

在FF工作。

使用IE - 如果我从桌面打开html文件并运行...它将调用sub.mydomain.com并获取信息。但是,如果我从www.mydomain.com打开该网站并调用该方法 - 没有。与Fiddler一起检查 - IE甚至没有发送请求。

1 个答案:

答案 0 :(得分:1)

您无法像这样从主域调用子域。这是一个“跨域”请求,请求将中断。它永远不会在www.mydomain.com - 甚至在FF上工作。 我不知道它是怎么回事。

无论如何,你的服务器是如何构建的?是mydomain.com/中的sub.mydomain.com文件夹,如:

顶级域名:

http_public/mydomain.com/

子域名

http_public/mydomain.com/sub_domains/sub.mydomain.com/

如果文件结构是这样的,那么您可以允许访问目录并使用

url: '/sub_domains/sub.mydomain.com/getinfo'+whatever

否则,您需要使用JSONP

JSONP or "JSON with padding" is a complement to the base JSON data format. It provides a method to request data from a server in a different domain, something prohibited by typical web browsers because of the Same origin policy.