使用AJAX从特定外部DIV加载文本?

时间:2010-06-09 00:14:53

标签: ajax jquery jquery-load

我正在尝试使用AJAX从http://www.census.gov/ipc/www/popclockworld.html加载估计的世界人口数量,到目前为止,实际上失败了。

在该页面上有一个ID为“worldnumber”的DIV,其中包含估计的人口,因此这是我想从页面中抓取的唯一文本。

这是我尝试过的:

  $(document).ready(function(){
    $("#population").load('http://www.census.gov/ipc/www/popclockworld.html #worldnumber *');
  });

4 个答案:

答案 0 :(得分:4)

您尝试执行的操作称为跨域请求。这不是browsers normally allow(安全功能)的功能。下面介绍了解决此限制的一些方法:The jQuery Cross-Domain Ajax Guide

答案 1 :(得分:0)

你可以尝试这样的事情:

$.get('http://www.census.gov/ipc/www/popclockworld.html', function(content) {
    $("#population").html($('#worldnumber',$(content)));
});

答案 2 :(得分:0)

是的,这是安全的。您不能访问不属于同一域的网页。

答案 3 :(得分:0)

<强> @ R0MANARMY:

我似乎无法按照您链接到的网站上的说明,但我确实找到了解决方案......我使用以下代码创建了一个PHP文件:

//Run cURL call
$ch = curl_init('http://www.census.gov/main/www/rss/popclocks.xml');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
$data = curl_exec($ch);
curl_close($ch);

//Set as new XML object
$doc = new SimpleXmlElement($data, LIBXML_NOCDATA);


function parseRSS($xml) {
  $cnt = count($xml->channel->item);
  for($i=0; $i<$cnt; $i++) {
    $title = $xml->channel->item[$i]->title;
    if ( preg_match("/world population estimate:\s([0-9,]+)\s/i", $title, $match) ) {
      echo $match[1];
    }
  }
}

parseRSS($doc);

然后我用jQuery这样调用它:

<div id="population"></div>

<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
  $(document).ready(function() {
    $('#population').load('getpop.php');
    var refreshId = setInterval(function() {
      $('#population').load('getpop.php');
    }, 120000);
   });
</script>

以为我会在这里发布,以防其他人想要做类似的事情。