【问题标题】:Cross Domain AJAX request return HTML (not jsonp)跨域 AJAX 请求返回 HTML(不是 jsonp)
【发布时间】:2014-08-04 05:13:58
【问题描述】:

我正在使用这个插件:https://github.com/padolsey/jquery.fn/tree/master/cross-domain-ajax/

这是我的代码:

   $.ajax({
      dataType: 'html',
      type: 'GET',
      url: 'http://www.google.com',
      crossDomain: true
  }).done(function(data) { 
       $("#box").html('').append(data);
  });

根据我的理解,即使我有 dataType:'html' 我很确定这仍然让我在 JSONP 中得到响应。

我希望能够抓取页面的整个 html,以及完整显示页面所需的一切。类似于 iframe。我需要通过 ajax 执行此操作的原因是因为最终我需要将参数传递给我正在使用的 URL。以完整的 HTML 返回页面内容的最佳方式是什么,以便我可以显示该页面?我是否还需要做任何事情来返回页面脚本/样式表?

基本上,需要返回我正在调用的 URL,以便我可以将返回附加到 div id,然后该 div id 应该看起来与我正在调用的页面完全一样,就好像我要加载该页面一样在浏览器窗口中独立。

谢谢!

【问题讨论】:

标签: javascript jquery html ajax cross-domain


【解决方案1】:

你可以试试 Ajax-cross-origin 一个 jQuery 插件。

http://www.ajax-cross-origin.com/

    $.ajax({
        crossOrigin: true,
        url: url,
        success: function(data) {
            console.log(data);
        }
    });

【讨论】:

    【解决方案2】:

    引用的插件使用Yahoo YQL service 作为代理来获取远程页面。 YQL 将返回 json,您应该能够访问 data.responseText 中的数据。这是插件的每个有限文档

    为了确保您可以将数据记录到控制台并查看其结构。

    在没有插件的情况下也可以做同样的事情,使用 YQL 控制台创建所需的 URL 以满足您的 XPATH 语法的抓取需求

    【讨论】:

    • 我做了警报(data.responseText);当我做警报(数据)时,并没有定义;我得到对象 Object,所以我知道它得到了一些东西。
    • 需要登录控制台查看结构
    • 插件看起来很旧,YQL 自创建以来可能已经改变
    • 您认为如果我将外部页面加载到 iframe 中并使用 javascript 仅将参数添加到我希望 iframe 加载的 url 会更好吗?这只是一个显示静态内容的获取请求
    • 一切都取决于目标是什么......如果你只是想要一些没有css的html......可以使用服务器代理来获取它然后你对服务器进行axax调用
    猜你喜欢
    • 2011-07-03
    • 2012-02-23
    • 1970-01-01
    • 2014-05-13
    • 2023-04-03
    • 2013-03-11
    • 1970-01-01
    • 2012-07-29
    相关资源
    最近更新 更多