2012-12-19 57 views
1

我有一個網頁,我試圖使用ajax調用來放置一些html內容從另一個網頁裏面。然而,我正在努力解決跨域問題。jQuery ajax,獲取html跨域

$('.trigger').click(function(e) { 
    e.preventDefault(); 
    $.ajax({ 
     url: 'http://myothersite.com', 
     datatype: 'text/html', 
     type: 'GET', 
     success: function(data) { 
      var content = data.responseText; 
      console.log(content); 
     } 
    }); 
}); 

任何人都可以建議我將如何實現這一目標?在任何現代的瀏覽器

感謝,

回答

5

不能做的text/html跨域GET。

唯一的返回類型,我知道的,工程是目前jsonp


或者你可以做一些cross-origin resource sharing

+2

或使用CORS ... –

+0

@MattBall也是。我會將其添加到我的答案中。 – Neal

2

如果您可以適當調整標題,則可以執行跨源請求。

爲了使它工作,你需要改變客戶端和服務器:

客戶:使用jQuery

jQuery.support.cors = true; 

服務器需要改爲

xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"]; 

客戶端以便適當地迴應OPTIONS請求。我寫了an example for ASP.NET Web API,但不管你在服務器上運行什麼概念都是一樣的。

如果無法對服務器進行更改(例如,它是第三方服務),則仍然可以使用old-school JSONP

+0

設置'jQuery.support.cors'爲'true';實際解決任何事情例如IE6 7不支持cors並且不能支持cors,IE8不能用$ .ajax來支持它,除非您對$ .ajax進行更改。 –

+0

如果您未將其設置爲true,CORS將無法在任何瀏覽器中運行。在發送實際請求之前,CORS通過發送OPTIONS預先請求並驗證響應來工作。 CORS絕對是一種「新瀏覽器」技術。 – Fenton

+0

例如,在chrome和firefox中,'$ .support.cors'爲'true',因爲「withCredentials」存在於xhr對象中。 –