Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaScript Ajax从另一个站点检索内容_Javascript_Jquery_Ajax_Dom_Same Origin Policy - Fatal编程技术网

使用JavaScript Ajax从另一个站点检索内容

使用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的许多函数。这是为了:

  • 提高我对JavaScript的整体理解
  • 让我成为一名更好的前端开发人员(与上述内容相关)
  • 通过消除简单任务对jQuery之类库的需求,提高web应用程序的速度和响应能力
我今天的目标是生成一个JavaScript函数,允许我对另一个站点进行Ajax调用,以检索特定的Div,并在页面中使用该Div中的内容。通过jQuery,我可以很容易地做到这一点,方法是使用.find()方法过滤来自Ajax调用的响应,检索我需要的特定Div,然后使用.html()函数剥离内容并将其附加到我站点上的Div。但是,我看不到使用Vanilla JavaScript实现这一点的替代方法

到目前为止,我的代码可以在下面找到:

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用于突出显示此选项。