我正在尝试使用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 *');
});
答案 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>
以为我会在这里发布,以防其他人想要做类似的事情。