跨域请求 - 执行所有脚本的页面内容

时间:2014-08-30 19:33:02

标签: javascript jquery ajax cross-domain

标题描述我的问题非常好。

我尝试执行跨域请求,首先执行加载的内容。

所以我有一个页面www.xyz.com,它通过ajax加载一些页面内容(例如一个实时自动收报机),我想在我自己的文件中使用这个内容。由于Php无法执行任何操作,我想做一个jquery get请求,但我无法弄清楚如何同时获取两者,跨域请求和执行的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);
});

1 个答案:

答案 0 :(得分:0)

如果您绝对必须使用AJAX来获取文件,那么尝试执行它,您可以使用以下代码执行此操作:

eval(ajaxResponseText);

另一种方法是使用data URI方案从XHR生成标记。

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

修改

既然有一个例子说明你的问题,我必须修改我的答案。

由于跨源攻击的普遍性和严重性, 无法在几乎所有浏览器上使用ajax进行跨域请求而不遵守CORS规范。只要新来源允许,跨源资源共享规范允许您向不同的来源发出ajax请求。如果它不起作用,javascript控制台可能是寻找错误的好地方。