2013-04-05 3 views
0

Я пытаюсь получить следующий код из w3schools для работы моего локального хоста через IIS. Когда я запускаю его, я вижу, что он пытается получить запрошенный rss-канал, но, к сожалению, он никогда не выполняется. Это позволяет мне видеть только варианты, но никогда их не отображает.Ajax rss feed не работает на localhost

Большое спасибо за любую помощь.

<html> 
    <head> 
     <script> 
      function showRSS(str) 
      { 
       if (str.length==0) 
        { 
        document.getElementById("rssOutput").innerHTML=""; 
        return; 
        } 
       if (window.XMLHttpRequest) 
        {// code for IE7+, Firefox, Chrome, Opera, Safari 
        xmlhttp=new XMLHttpRequest(); 
        } 
       else 
        {// code for IE6, IE5 
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
        } 
       xmlhttp.onreadystatechange=function() 
        { 
        if (xmlhttp.readyState==4 && xmlhttp.status==200) 
        { 
        document.getElementById("rssOutput").innerHTML=xmlhttp.responseText; 
        } 
        } 
      xmlhttp.open("GET","getrss.php?q="+str,true); 
      xmlhttp.send(); 
     } 
     </script> 
    </head> 
<body> 

    <form> 
     <select onchange="showRSS(this.value)"> 
      <option value="">Select an RSS-feed:</option> 
      <option value="Google">Google News</option> 
      <option value="MSNBC">MSNBC News</option> 
     </select> 
    </form> 
    <br> 
    <div id="rssOutput">RSS-feed will be listed here...</div> 
    </body> 
</html> 

И файл PHP

<?php 
    header('Access-Control-Allow-Origin: *'); 
    //get the q parameter from URL 
    $q=$_GET["q"]; 

    //find out which feed was selected 
    if($q=="Google") 
      { 
      $xml=("http://news.google.com/news?ned=us&topic=h&output=rss"); 
      } 
     elseif($q=="MSNBC") 
      { 
     $xml=("http://rss.msnbc.msn.com/id/3032091/device/rss/rss.xml"); 
     } 

    $xmlDoc = new DOMDocument(); 
    $xmlDoc->load($xml); 

    //get elements from "<channel>" 
    $channel=$xmlDoc->getElementsByTagName('channel')->item(0); 
    $channel_title = $channel->getElementsByTagName('title') 
    ->item(0)->childNodes->item(0)->nodeValue; 
    $channel_link = $channel->getElementsByTagName('link') 
    ->item(0)->childNodes->item(0)->nodeValue; 
    $channel_desc = $channel->getElementsByTagName('description') 
    ->item(0)->childNodes->item(0)->nodeValue; 

    //output elements from "<channel>" 
    echo("<p><a href='" . $channel_link 
     . "'>" . $channel_title . "</a>"); 
    echo("<br>"); 
    echo($channel_desc . "</p>"); 

    //get and output "<item>" elements 
    $x=$xmlDoc->getElementsByTagName('item'); 
    for ($i=0; $i<=2; $i++) 
     { 
     $item_title=$x->item($i)->getElementsByTagName('title') 
     ->item(0)->childNodes->item(0)->nodeValue; 
     $item_link=$x->item($i)->getElementsByTagName('link') 
     ->item(0)->childNodes->item(0)->nodeValue; 
     $item_desc=$x->item($i)->getElementsByTagName('description') 
     ->item(0)->childNodes->item(0)->nodeValue; 

     echo ("<p><a href='" . $item_link 
     . "'>" . $item_title . "</a>"); 
     echo ("<br>"); 
     echo ($item_desc . "</p>"); 
     } 
?> 
+0

Извините, небольшое редактирование здесь, я могу запустить код в XAMPP, но не в IIS, и мне в основном любопытно, почему. – Cdndoodlez

ответ

0

Может быть, это кросс проблема платформы.

Если вы используете Chrome, попробуйте открыть его, как это:

chrome.exe -allow-file-access-from-files 
0

Поскольку HTML-код делает это:

  • Проверяет выбран RSS-канал; then
  • Создает функцию, которая будет выполнена, когда ответ сервера будет готов; затем
  • Посылает запрос прочь к файлу на сервере,

Вы используете это на макинтош? Я думаю, что localhost не может дать ответ сервера в os x. Или вы должны разблокировать что-то с помощью терминала, чтобы заставить его работать.

Этот код верен, потому что он работает на моем сервере.