2011-05-14 41 views
5

我正在通過動態添加腳本並將其src屬性設置爲需要發送請求的域來發出javascript中的跨域請求。 參考:http://alvinabad.wordpress.com/2009/02/13/feb13/如何在javascript中獲取跨域請求的響應

Script代碼:

var script_id = null; 
var script = document.createElement('script'); 
script.setAttribute('type', 'text/javascript'); 
script.setAttribute('src', crossDomainURL); 
script.setAttribute('id', 'script_id'); 

script_id = document.getElementById('script_id'); 
if (script_id) { 
    document.getElementsByTagName('head')[0].removeChild(script_id); 
} 

現在,我需要解析這個請求的響應。我已經檢查了來自提琴手的Raw Response。數據在那裏,但它不是在那裏。它是這樣開始的:

<script type="text/javascript"> 
/* <![CDATA[ */ 
    if (top == self || parent != top || document.location.hostname != document.domain) 
    { 
     top.location.replace("http:\/\/www.facebook.com\/?gringotts_redir");} 
/* ]]> */ 
</script> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"**... then the rest 

頁面源代碼顯示了由我嵌入的JavaScript,如何解析從該代碼生成的數據。

+0

您可以提供您要求的位置,以便我可以看到完整的回覆 – wong2 2011-05-14 15:51:24

回答

1

通常這樣做的方式是讓腳本響應包含對頁面上已經存在的函數的函數調用。但是,出於安全原因,瀏覽器不會讓您的代碼「看到」導入腳本的內容。然而,只要它是有效的JavaScript代碼,瀏覽器將運行腳本。在你的情況下,迴應是而不是有效的JavaScript代碼。不能有<script>標記或任何HTML標記—它必須是純JavaScript代碼,就像導入<script>標記的任何其他文件的內容一樣。