Carregar texto de div externo específico usando AJAX?
-
25-09-2019 - |
Pergunta
Estou tentando carregar a população mundial estimada de http://www.census.gov/ipc/www/popclockworld.html Usando o Ajax e até agora, falhando miseravelmente.
Há uma div com o ID "WorldNumber" naquela página que contém a população estimada, de modo que esse é o único texto que quero pegar na página.
Aqui está o que eu tentei:
$(document).ready(function(){
$("#population").load('http://www.census.gov/ipc/www/popclockworld.html #worldnumber *');
});
Solução
O que você está tentando fazer é conhecido como uma solicitação de domínio cruzado. Este não é um recurso que Os navegadores normalmente permitem (recurso de segurança). Algumas maneiras de contornar essa limitação são descritas aqui: O guia Ajax do Domínio Cross.
Outras dicas
Você pode tentar algo assim:
$.get('http://www.census.gov/ipc/www/popclockworld.html', function(content) {
$("#population").html($('#worldnumber',$(content)));
});
Sim, é segurança. Você não pode entrar em páginas que não são do mesmo domínio.
@R0MANARMY:
Eu não conseguia seguir as instruções dadas naquele site ao qual você vinculou, mas descobri uma solução ... criei um arquivo php com o seguinte código:
//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);
Então eu liguei com o jQuery como assim:
<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>
Apenas pensei em postar aqui, caso qualquer outra pessoa esteja procurando fazer algo semelhante.