Загружать текст из определенного внешнего DIV с помощью AJAX? - PullRequest
2 голосов
/ 09 июня 2010

Я пытаюсь загрузить оценочную численность населения мира http://www.census.gov/ipc/www/popclockworld.html, используя AJAX, и до сих пор с треском проваливался.

На этой странице есть DIV с идентификатором "worldnumber", которыйсодержит приблизительную численность населения, так что это единственный текст, который я хочу взять со страницы.

Вот что я пробовал:

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

Ответы [ 4 ]

4 голосов
/ 09 июня 2010

То, что вы пытаетесь сделать, называется междоменным запросом.Это не та функция, которую браузеры обычно допускают (функция безопасности).Некоторые способы обойти это ограничение описаны здесь: Руководство по междоменному Ajax для jQuery .

0 голосов
/ 09 июня 2010

@ 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>

Просто подумал, что я опубликую это здесь на случай, если кто-то еще хочет сделать что-то подобное.

0 голосов
/ 09 июня 2010

Да, это безопасность. Вы не можете зайти на страницы, которые не принадлежат одному домену.

0 голосов
/ 09 июня 2010

вы можете попробовать что-то вроде этого:

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