使用JavaScript Ajax从另一个站点检索内容
我目前正在尝试用一个普通的Javascript替代当前使用jQuery的许多函数。这是为了:使用JavaScript Ajax从另一个站点检索内容,javascript,jquery,ajax,dom,same-origin-policy,Javascript,Jquery,Ajax,Dom,Same Origin Policy,我目前正在尝试用一个普通的Javascript替代当前使用jQuery的许多函数。这是为了: 提高我对JavaScript的整体理解 让我成为一名更好的前端开发人员(与上述内容相关) 通过消除简单任务对jQuery之类库的需求,提高web应用程序的速度和响应能力 我今天的目标是生成一个JavaScript函数,允许我对另一个站点进行Ajax调用,以检索特定的Div,并在页面中使用该Div中的内容。通过jQuery,我可以很容易地做到这一点,方法是使用.find()方法过滤来自Ajax调用的响
- 提高我对JavaScript的整体理解
- 让我成为一名更好的前端开发人员(与上述内容相关)
- 通过消除简单任务对jQuery之类库的需求,提高web应用程序的速度和响应能力
function fireAjaxRequest(requestType,requestUrl,contentPlaceholder){
var ajaxRequest;
if(window.XMLHttpRequest){
ajaxRequest = new XMLHttpRequest();
}else{
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
ajaxRequest.onreadystatechange = function(){
if(ajaxRequest.readyState == 4 && ajaxRequest.status == 200){
contentPlaceholder.innerHTML = ajaxRequest.responseText;
}
}
ajaxRequest.open(requestType,requestUrl, true);
ajaxRequest.send();
}
我调用我的函数如下:
var contentArea = document.getElementById('news');
fireAjaxRequest('GET', 'http://www.bbc.co.uk',contentArea);
当我加载我的页面时,我可以在Firebug中看到请求成功完成,我得到了
来自Ajax调用的200个成功响应,但是在我的目标元素中没有显示任何内容。起初我认为这是因为您无法在单个元素中存储整个页面,但在稍微修改代码后,我发现以下代码片段在Ajax调用成功后似乎无法执行:
ajaxRequest.onreadystatechange = function(){
if(ajaxRequest.readyState == 4 && ajaxRequest.status == 200){
contentPlaceholder.innerHTML = ajaxRequest.responseText;
}
}
我在这里做错什么了吗 你真的需要调查一下。我想你会明白为什么你要做的事情会受到严格的限制 如果控制这两个域,则可以使用或
您还可以向自己的服务器发送一个ajax请求,该服务器充当代理。您的服务器会将请求“转发”到目标服务器,并将响应转发给客户端。我知道XSS,但有很多解决方法。本质上,我们是为客户设计产品,需要从他们的网站中提取一些内容到他们模板的版本中。不幸的是,他们似乎没有那么精通技术,也没有为我想要获取的内容提供XML或RSS提要,所以Ajax是我能想到的唯一解决方案。@jezzipin,如果是这样的话,你就会知道一个普通的Ajax请求是行不通的。就像我说的,有很多方法可以解决这个问题,就像我过去做的那样。我已经很久没有用香草写过很多东西了JavaScript@maček如果你同时控制这两个域,你应该允许而不是使用像JSONP这样的黑客。@JosephDreamer一个好朋友+1用于突出显示此选项。