2012-09-24 89 views
2

我以前沒有在這裏發佈過,但是我在發佈之前已經嘗試做一些研究,以便我沒有浪費任何人的時間,但是我沒有發現任何人發佈過類似的問題。單個頁面上有多個AJAX RSS閱讀器?

我有一個頁面上獲取兩個RSS訂閱源的問題,我編輯了http://www.w3schools.com/php/php_ajax_rss_reader.asp示例。基本上,當我從HTML onload =「runscripts();」 功能: showRSS('Google'); rssevents('events'); 只有其中一個填充DIV。儘管變量完全不同,但我確實得到了它在我身邊的工作,但偶爾會有一個feed會填充另一個DIV。

本質上我已經加倍了代碼並創建了不同的變量,所以希望我會在單個頁面上有兩個RSS提要?但它不起作用。

任何幫助將受到歡迎:)甚至指向我在正確的方向!乾杯:)

繼承人的代碼:

負載體調用這兩個函數:

function runscripts(){ 
     showRSS('Google'); 
     rssevents('events');   
} 

的Javascript標題:

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"); 
     } 

    if(str=='Google') 
    { 
    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(); 
    } 

    else{ 
     xmlhttp.onreadystatechange=function() 
     { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) 
     { 
     document.getElementById("upcomingevents").innerHTML=xmlhttp.responseText; 
     } 
     } 
     xmlhttp.open("GET","getrssEvents.php?q="+str,true); 
     xmlhttp.send(); 
    } 



    } 
    function rssevents(str) 
    { 
    if (str.length==0) 
     { 
     document.getElementById("upcomingevents").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("upcomingevents").innerHTML=xmlhttp.responseText; 
     } 
     } 



    xmlhttp.open("GET","getrssEvents.php?q="+str,true); 
    xmlhttp.send(); 
    } 

PHP代碼:

getrss.php:

<?php 
//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(1)->childNodes->item(1)->nodeValue; 
$channel_link = $channel->getElementsByTagName('link') 
->item(1)->childNodes->item(1)->nodeValue; 
$channel_desc = $channel->getElementsByTagName('description') 
->item(1)->childNodes->item(1)->nodeValue; 


//get and output "<item>" elements 
$x=$xmlDoc->getElementsByTagName('item'); 
$k=4; 
$findme = '<img src'; 

for ($i=1; $i<=$k; $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; 

    $pos = strpos($item_desc,$findme); 

    if($pos==false) 
    { 
     $k=$k+1; 
    } 
    else{ 
    echo ("<p><div class='rsstitle' style='height:120px;'><div class='rsstable2'>" . $item_desc); 
    echo ("</div><div class='rsstable'><a href='" . $item_link . "' target='_blank'>" . $item_title . "</a></div></div><p/>"); 
    } 

    } 
?> 

getrssEvents.php:

<?php 
//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=="events") 
    { 
    $xml=("http://groupspaces.com/LoughboroughFinanceSociety/api/events?alt=rss"); 
    } 

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

//get elements from "<channel>" 
$channel=$xmlDoc2->getElementsByTagName('channel')->item(0); 
$channel_title = $channel->getElementsByTagName('title') 
->item(0)->childNodes->item(0)->nodeValue; 
$channel_link = $channel->getElementsByTagName('summary') 
->item(0)->childNodes->item(0)->nodeValue; 
//$channel_desc = $channel->getElementsByTagName('gs:location') 
//->item(0)->childNodes->item(0)->nodeValue; 


//get and output "<item>" elements 
$x=$xmlDoc2->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('summary') 
    ->item(0)->childNodes->item(0)->nodeValue; 
    //$item_desc=$x->item($i)->getElementsByTagName('gs') 
    ///->item(0)->childNodes->item(0)->nodeValue; 

    //echo ("<div class='rsstitle'>" . $item_desc); 
    //echo ("<a href='" . $item_link . "'>" . $item_title . "</a></div><p/>"); 
    echo(" <div class='rssevents'><div class='rsseventtitle'> ".$item_title."</div>". $item_link."</div>"); 

    } 
?> 

乾杯的任何幫助。謝謝

回答

0

當使用AJAX函數時,需要在第一個AJAX函數的回調函數中放置順序代碼(可能是另一個AJAX函數)。這確保了第二次呼叫在第一次呼叫完成之後進行。 否則,順序代碼可能在第一個AJAX函數完成之前執行。

+0

給這個人一些堆棧溢出點!!!! :) 我在回調中放置第二個函數調用,它第一次工作。 –