如何在javascript中获取跨域请求的响应

sum*_*mer 5 javascript dom request cross-domain dynamic-script-loading

我通过动态添加脚本并将其src属性设置为我需要请求的域来在javascript中创建跨域请求.供参考:http://alvinabad.wordpress.com/2009/02/13/feb13/

脚本代码:

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);
}
Run Code Online (Sandbox Code Playgroud)

现在,我需要解析此请求的响应.我已经检查过fiddler的原始响应.数据在那里,但它不在dom中.它是这样开始的:

<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
Run Code Online (Sandbox Code Playgroud)

页面源显示我嵌入的javascript,如何解析从该代码生成的数据.

Poi*_*nty 1

通常完成此操作的方法是让脚本响应包含对页面上已存在的函数的函数调用。但是,出于安全原因,浏览器不会让您的代码“查看”导入脚本的内容。不过,只要脚本是有效的 JavaScript 代码,浏览器就会运行该脚本。在您的情况下,响应不是有效的 JavaScript 代码。不能有<script>标签或任何 HTML 标记 - 它必须是纯 JavaScript 代码,就像使用标签导入的任何其他文件的内容一样<script>