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

标签 javascript jquery ajax dom same-origin-policy

我目前正在尝试用 Vanilla Javascript 替代方案替换一些我目前使用 jQuery 的函数。这是为了:

  • 从整体上加深我对 JavaScript 的理解
  • 让我成为更好的前端开发人员(与上述相关)
  • 无需使用 jQuery 等库来完成简单任务,从而提高网络应用程序的速度和响应能力。

我今天的目标是生成一个 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;
  }
}

我是不是做错了什么?

最佳答案

你真的需要看看XSS .我想您会理解为什么您尝试做的事情有严格的限制。

如果您同时控制这两个域,则可以使用 JSONPCORS .

您还可以将 ajax 请求发送到您自己的充当代理的服务器。您的服务器会将请求“转发”到目标服务器,并将响应转发给客户端。

关于javascript - 使用 JavaScript Ajax 从另一个站点检索内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22806375/

相关文章:

javascript - Jquery:显示/隐藏由 python for 循环创建的 Div

javascript - V 形图标向上或向下,具体取决于 Accordion 位置

javascript - 增量加载网页 : Where can I put: $ ("#LoadingImage"). Hide();

javascript - 我如何在 php codeigniter 上运行 ajax

javascript - 带有图像和文本的淡入、淡出 div(使用 jquery)

javascript - 常见问题单击时 Accordion 折叠

javascript - Java 中的 List<String> 到 JavaScript 中的 List

jquery - 是否可以使用 JQuery Mobile 在辅助 div 类中包含可折叠内容?

jquery - 在 jquery 轮播上添加一个 div 层。艰难的

jquery - 在 ASP.NET MVC 中使用 AJAX 刷新表