2013-04-05 46 views
0

我試圖從w3schools通過IIS獲取以下代碼來工作哦我的本地主機。當我運行它時,我可以看到它試圖檢索請求的RSS源,但不幸的是它永遠不會執行。它只允許我查看選項,但從不顯示它們。Ajax rss源不在本地主機上工作

非常感謝您的任何幫助。

<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 2013-04-05 04:11:53

回答

0

也許這是一個跨平臺的問題。

如果您使用Chrome,嘗試像這樣打開它:

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

因爲HTML代碼做到這一點:

  • 檢查是否選擇了一個RSS源; 然後
  • 創建要在服務器響應就緒時執行的函數; 然後
  • 發送請求關閉服務器上的文件,

是否使用這個在您的Mac?我認爲本地主機不能在os x中提供服務器響應。或者,你必須使用終端解鎖某些東西才能使其工作。

此代碼是正確的,因爲它可以在我的服務器上工作。

相關問題