2012-04-19 50 views
0

我有一個用引導程序設計的HTML頁面,它調用REST服務來更新數據庫的信息。 javascript:FF中的子域REST調用工作不在IE中

$.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打開網站並調用該方法 - 什麼也不做。檢查與提琴手 - IE甚至不發送請求。

+0

是否sub.mydomain.com當回調參數存在時,返回有效的'JSONP'? – 2012-04-19 18:44:04

+0

你看IE瀏覽器中是否有錯誤? – 2012-04-19 18:45:22

回答

1

您不能像這樣調用主域中的子域名。這是一個'跨域'請求,請求會中斷。它不應該從www.mydomain.com - 即使在FF。 我不知道它是如何做到的。

無論如何,你的服務器是如何構建的?距離mydomain.com/?Such的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.

+0

我有nginx在前臺運行,NodeJS + Restify爲API。 Nginx爲來自主要www.mydomain站點的文件夾提供靜態HTML。 REST調用由api.mydomain提供服務。 Nginx將api路由到NodeJs。在FF上它工作正常..但在IE瀏覽器上沒有任何東西被髮送。 – 2012-04-19 23:02:38

+0

另外,我正在使用JSONP調用... $。getJSON()。並擁有$ .support.cors = true; – 2012-04-19 23:25:30