从不同域中的远程URL获取具有特定类的标记的内容

时间:2014-02-28 10:36:37

标签: jquery html ajax google-chrome-extension google-chrome-app

我正试图从http://www.premierleague.com/en-gb.html获得当前的英国顶级联赛表,但我不想要整个网站,我只想要联赛表,如果你敏锐地看到页面来源<table>具有联盟表的标签没有id,但是有.leagueTable类,所以我只想获得该表。 这是我的代码

<head>
       <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
       <script src="jquery.xdomianajax.js"></script>
  </head>
  <body>
    <div id='currentstandings'></div>  

      <script>
$(document).ready(function(){
loadEPLstandings(); 
});
    function loadEPLstandings () {
     $.ajax({
       url: 'http://www.premierleague.com/en-gb.html',
       type: 'GET',
       success: function(res) {        
          var success =  $(res).filter(".leagueTable"); 
          $('#currentstandings').html(success);
       }
     });
   }
</script>

但没有任何东西加载到该div上!我哪里错了? 我使用了跨域ajax jQuery plugin

更新

当前的答案完全可以作为浏览器上的网页,但现在我希望这是一个Chrome应用,而不是打开浏览器并输入网址,我添加了一个相关的清单文件权限,但当我将我的Chrome应用程序加载到谷歌浏览器时,我遇到了死胡同。 经过几次头痛和研究后,我注意到谷歌Chrome应用程序不支持ajax(或它的一种风格)调用我必须将我的功能更改为此但它无法正常工作

function loadEPLstandings () {
document.write("Sending request");
    var req = new XMLHttpRequest();
      req.open("GET", "http://www.premierleague.com", true);
      req.onreadystatechange = function() {
          if (req.readyState == 4) {
            if (req.status == 200) {
               var success =  $(res.responseText).find(".leagueTable")[0].innerHTML;
            $('#currentstandings').html(success);
                                       $("#currentstandings").contents().find("tr:has(p)").find("p").contents().unwrap();
            }
          }
        };
      req.send();
}

,我哪里错了?它不能作为浏览器的网页或Chrome应用程序工作吗?

2 个答案:

答案 0 :(得分:2)

我只能看到代码中的一些问题,我已经在这里修复了......

function loadEPLstandings () {
    $.ajax({
        url: 'http://www.premierleague.com/en-gb.html',
        type: 'GET',
        success: function(res) {        
            var success =  $(res.responseText).find(".leagueTable")[0].innerHTML;
            $('#currentstandings').html(success);
        }
    });
}

首先,您尝试过滤res,但这是一个对象。您需要财产responseText。其次,我使用find()而不是filter(),因为它什么也没有返回。最后,我添加了[0].innerHTML以获取jQuery选择的DOM元素并返回内部html值,因此您可以使用html()进行设置。

答案 1 :(得分:0)

这是我的最终代码,必须删除所有<p>代码

$(document).ready(function(){
loadEPLstandings(); 
});
    function loadEPLstandings () {
    $.ajax({
        url: 'http://www.premierleague.com/en-gb.html',
        type: 'GET',
        success: function(res) {        
            var success =  $(res.responseText).find(".leagueTable")[0].innerHTML;
            $('#currentstandings').html(success);
            $("#currentstandings").contents().find("tr:has(p)").find("p").contents().unwrap();
        }
    });
}