2011-05-14 45 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>标记的任何其他文件的内容一样。