2012-03-30 113 views
1

可能重複:
JQuery ajax cross domainjQuery的AJAX跨域調用失敗

我需要通過AJAX從另一個網站加載內容。下面的代碼工作只本地主機的URL,但不打開網址如google.com

$.ajax({ 
    url: urlLeft, 
    crossDomain:true, 
    success: function(data){ 
     var loadedId = createLoadedPage(); 
     data = data.replace(/<script.*?>|<\/script>/mgi,''); 
     data = data.replace(/.*<body.*?>|<\/body>.*/gi,''); 
     $('#'+loadedId).html(data) 
     $('#content_left').html($('#'+loadedId+' #snapwrap_outer').html()); 
     removeLoadedPage(loadedId); 
    }, 
    dataType: 'html' 
}); 
+3

http://en.wikipedia.org/wiki/Same_origin_policy? – PeeHaa 2012-03-30 12:26:07

+0

我不確定,但我認爲crossDomain以這樣的方式工作,您的網站服務器應該執行重定向到所需的網址。 – 2012-03-30 12:27:17

回答

3

由於same origin policy restriction無法發送跨域AJAX請求。以下是guide,您可以查看可以使用的一些可能的解決方法。

+0

但我可以設置jsonp並執行此類跨域調用 – 2012-03-30 12:30:19

+1

@OleksandrKhavdiy,這就是JSONP的要點,請參閱:http://en.wikipedia.org/wiki/JSONP – 2012-03-30 12:31:42

+0

您必須按順序控制遠程地址使用JSONP。遠程服務器必須發送JSONP而不是JSON。如果您無法控制遠程域,則無法使用它。 – 2012-03-30 12:34:53

0

這是因爲Same Origin Policy,在你的情況下,基本上意味着你不能在你的域之外進行ajax調用,因爲瀏覽器不會讓你。你不能規避這一點。

解決方案是將您的遠程調用委託給例如將訪問數據的PHP腳本(與需要執行的ajax調用位於同一位置),並通過ajax訪問該腳本呼叫。