简体   繁体   中英

How to get cross domain request's response in javascript

I am making a cross domain request in javascript by dynamically adding a script and setting its src attribute to the domain that I need to make request to. For reference: http://alvinabad.wordpress.com/2009/02/13/feb13/

Script code:

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);
}

Now, I need to parse the Response of this request. I have checked the Raw Response from fiddler. The data is there, but it's not in the dom. It starts like this:

<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

The page source shows the javascript embedded by me, how do I parse the data that's generated from that code.

The way this is generally done is to have the script response consist of a function call to a function already present on the page. The browser will not let your code "see" the contents of the imported script, however, for security reasons. The browser will run the script, however, so long as it's valid JavaScript code. In your case, the response is not valid JavaScript code. There can't be a <script> tag or any HTML markup — it must be pure JavaScript code, just like the contents of any other file imported with a <script> tag.

What your asking for is known as JSONP or "JSON with padding".

see: http://en.wikipedia.org/wiki/JSONP for more info.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM