【问题标题】:Getting specific element from external site using jQuery / ajax使用 jQuery / ajax 从外部站点获取特定元素
【发布时间】:2014-01-29 11:56:18
【问题描述】:

我正在使用 jQuery 和 this plugin 从外部站点提取内容。

使用以下代码效果很好:

$.ajax({
       url: 'http://www.somesite.com/',
       type: 'GET',
       success: function(res) {
          $("#here").html(res.responseText);
       }
     });

但我真正想做的只是从目标站点中提取一个部分(div),我知道这只有在使用load() 方法时才有可能,而不是GET

然后我找到了 this code ,但是当我尝试将其构建到代码中时,它似乎不起作用,因此:

$.ajax({
       url: 'http://www.somesite.com/',
       type: 'GET',
       success: function(res) {
          $(res).find('div.content').each(function(){
              $('#here').append($(this).html());
         });

       }
     });

在 Firebug 上查看请求,请求似乎成功,但代码似乎在目标站点上找不到以下标记:<div class="content row">

我是否需要确保目标元素有一个#ID,而不是一个类?

谢谢!

【问题讨论】:

    标签: jquery ajax cross-domain


    【解决方案1】:

    尝试使用jQuery.parseHTML();

    说明:将字符串解析为 DOM 节点数组。

    $.ajax({
       url: 'http://www.somesite.com/',
       type: 'GET',
       success: function(res) {
          var data = $.parseHTML(res);  //<----try with $.parseHTML().
          $(data).find('div.content').each(function(){
              $('#here').append($(this).html());
         });
    
       }
     });
    

    因为 ajax 响应是 string,这样你就不能使用 .find() 方法来查找 dom 节点。所以首先你必须将字符串解析为你从服务器收到的 dom 节点,然后你可以使用.find() 来选择你的目标元素。

    【讨论】:

      【解决方案2】:

      在您最初的成功回调中,您从 responseText 获取您的 html 内容,您应该在第二种情况下执行相同操作:

         success: function(res) {
            $(res.responseText).find('div.content').each(function(){
                $('#here').append($(this).html());
           });
      

      使用 class="content" 或 id 应该可以。但是,您应该知道,上面的代码将所有具有类内容的 div 添加到您的 id="here" div 中,这可能不是您想要的。如果您只想要特定元素的内容,请改用它的 id

      【讨论】:

      • 在 id 上使用 find 怎么样? find('div#content) 会起作用吗?
      • @Gcap 这会起作用(假设在返回的 html 中有一个 &lt;div id="content"&gt;
      猜你喜欢
      • 2014-11-17
      • 1970-01-01
      • 2012-11-07
      • 1970-01-01
      • 2010-11-08
      • 1970-01-01
      • 2021-04-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多