2014-08-30 81 views
0

標題描述了我的問題相當不錯。跨域請求 - 執行所有腳本的頁面內容

我嘗試做一個跨域請求,其中加載的內容首先被執行。

因此,我有頁面www.xyz.com通過ajax加載一些頁面內容(例如實時股票行情),我想在我自己的文件中使用這些內容。由於PHP不能執行任何操作,我想要做一個jQuery獲取請求,但我無法弄清楚如何同時獲得這兩個請求,跨域請求並執行javascript。

在此先感謝。

更新:

例如,我試過這段代碼:

function requestCrossDomain(site, callback) { 

    if (!site) { 
     alert('No site was passed.'); 
     return false; 
    } 

    var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from html where url="' + site + '"') + '&format=xml&callback=?'; 

    $.getJSON(yql, cbFunc); 

    function cbFunc(data) { 

    if (data.results[0]) { 

     data = data.results[0]; 

     if (typeof callback === 'function') { 
      callback(data); 
     } 
    } 
    else throw new Error('Nothing returned from getJSON.'); 
    } 
} 

requestCrossDomain('http://www.google.com', function(results) { 
    //htmlcode = eval(results); 
    htmlcode = results; 
    $('#container').html(htmlcode); 
}); 
+0

幫我理解。當你說「在我自己的文件中使用這個內容」時,你的意思是一個JavaScript文件或一個PHP文件? – 2014-08-30 19:57:28

+0

我不真的在乎 - 但因爲你不能執行js和php,並且沒有任何外部服務(據我所知),這是一個JavaScript文件。 – user2960187 2014-08-31 10:54:06

回答

0

如果你絕對必須使用AJAX來獲取文件,然後嘗試去執行它,你可以用下面的代碼這樣做:

eval(ajaxResponseText); 

另一種方式做,這是產生從XHR採取data URI方案的優勢標籤。

var script = document.createElement("script") 
script.src = "data:text/javascript;charset=utf8," + encodeURIComponent(ajaxResponseText); 
document.body.appendChild(script); 

編輯

現在有一個例子照亮你的問題,我必須修改我的答案。

不能因爲跨源攻擊的普遍性和嚴重性,在幾乎所有的瀏覽器上使用ajax而不遵守CORS規範。 跨源資源共享規範允許您將ajax請求發送到不同的來源,只要新來源允許它。如果它不工作,javascript控制檯可能是查找錯誤的好地方。