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 *');
  });
Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top