2012-09-24 2 views
2

전 여기에 글을 올리지는 않았지만 글을 게시하기 전에 조사를 해본 결과 누군가의 시간을 낭비하지 않았지만 비슷한 문제로 게시 된 사람을 찾지 못했습니다.한 페이지에 여러 AJAX RSS 리더기가 있습니까?

두 페이지의 RSS 피드를 가져 오는 데는이 문제가 있습니다. 예를 들어 http://www.w3schools.com/php/php_ajax_rss_reader.asp을 수정했습니다. 기본적으로 둘 다 html에서 호출 할 때 onload = "runscripts();" 함수 : showRSS ('Google'); rssevents ('events'); 그 중 하나만 DIV를 채 웁니다. 나는 그것을 내 옆에서 일하게 만들었지 만 변수가 완전히 다르더라도 때때로 한 피드가 다른 DIV를 채울 것입니다.

본질적으로 코드를 두 배로 만들고 다른 변수를 만들었 기 때문에 내 단일 페이지에 두 개의 rss 피드가 생길 것입니다. 그러나 그것은 효과가 없습니다.

어떤 도움이라도 환영받을 것입니다. :) 심지어 올바른 방향으로 나를 가리 키기 위해! 건배 :)

을 heres 코드 : 부하에

몸을 모두 호출 기능 :

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

자바 스크립트 헤더 :

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 :

,742,212,219,727,815,446,523,210

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

이 남자에게 어떤 스택 오버 플로우 포인트 !!!! :) 두 번째 함수 호출을 콜백에 배치하고 처음으로 작동했습니다. –

관련 문제