php.de

Zurück   php.de > Webentwicklung > JavaScript, Ajax und mehr

JavaScript, Ajax und mehr dynamisches Scripten und Interaktion auf Clientebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.09.2011, 13:58  
Neuer Benutzer
 
Registriert seit: 19.08.2011
Beiträge: 6
PHP-Kenntnisse:
Anfänger
mynik befindet sich auf einem aufstrebenden Ast
Standard Select Form, onchange showRSSfeed Ajax

Wie man am Titel bereits erkennen kann, gebe ich ein Dropdown-Select-Menü aus, in welchem der gewünsche RSS-feed ausgewählt werden kann.
Dieser Feed soll bei Auswahl in einem dafür vorgesehenen Div angezeigt werden.

Mein Problem besteht darin, das einer Auswahl im Select-Menü nichts geschieht.
Es wird zwar anscheinend etwas geladen, aber kein DIV oder neuer Inhalt angezeigt.
Für mich scheint der Ajax-Code jedoch augenscheinlich in Ordnung zu sein. Liegt hier möglicherweise ein Problem im PHP vor?

Hier der Ajax-Code der in dem Header meiner index.php steht:
Code:
<script type="text/javascript">
	function showRSS(str)
	{
		if(str.length==0)
		{	
			document.getElementById("rssOutput").innerHTML="";
			return;
		}
		// Neue Instanz des XMLHttp Objekts
		xmlhttp = new XMLHttpRequest();

		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>
Hier der PHP-Code den ich in ein Modal-Fenster innerhalb der index.php include:

PHP-Code:
<div id="rssform">
    <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>
</div>

<?php
    
function getRssfeed($rssfeed$cssclass=""$encode="auto"$anzahl="10"$mode="0")
    {
        if(
$rssfeed == 0)
        {                
            return;
        }
        else 
        {    
// @file oeffnet den rssfeed und speichert ihn in ein Array    
            
$data = @file($rssfeed);
        }
        
// Mittels implode wird aus dem Array und einem Leerzeichen als glue ein String
        
$data implode($data);
        
// Data String wird nach Items durchsucht "/Uism" U-Ungreedy I-Casecareless s-.Mod m-Multiline
        
preg_match_all("/<item.*>(.+)<\/item>/Uism"$data$items);
        
// Wird keine Encodierungsvariante angegeben, wird automatisch die jeweilige ausgelesen
        
if($encode == "auto")
        {
            
preg_match("/<?xml.*encoding=\"(.+)\".*?>/Uism"$data$encodingarray);
            
$encoding $encodingarray[1];
        }
        else
        {
            
$encoding $encode;
        }
        
        echo 
"<div class=\"rssOutput\">\n";
        
        
// Titel und Link zum Channel 
        
if($mode == || $mode == 3)
        {
            
$data preg_replace("/<item>(.+)<\/item>/Uism"''$data);
            
preg_match("/<title>(.+)<\/title>/Uism"$data$channeltitle);
            
preg_match("/<link>(.+)<\/link>/Uism"$data$channellink);

            
$channeltitle preg_replace('/<!\[CDATA\[(.+)\]\]>/Uism''$1'$channeltitle);
            
$channellink preg_replace('/<!\[CDATA\[(.+)\]\]>/Uism''$1'$channellink);

            echo 
"<h1><a href=\"".$channellink[1]."\" title=\"";
            if(
$encode != "no")
            {
                echo 
htmlentities($channeltitle[1],ENT_QUOTES,$encoding);
            }
            else
            {
                echo 
$channeltitle[1];
            }
            echo 
"\">";
            if(
$encode != "no")
            {
                echo 
htmlentities($channeltitle[1],ENT_QUOTES,$encoding);
            }
            else
            {
                echo 
$channeltitle[1];
            }
            echo 
"</a></h1>\n";
        }
        
        
// Titel, Link und Beschreibung der Items
        
foreach ($items[1] as $item
        {
            
preg_match("/<title>(.+)<\/title>/Uism"$item$title);
            
preg_match("/<link>(.+)<\/link>/Uism"$item$link);
            
preg_match("/<description>(.*)<\/description>/Uism"$item$description);

            
$title preg_replace('/<!\[CDATA\[(.+)\]\]>/Uism''$1'$title);
            
$description preg_replace('/<!\[CDATA\[(.+)\]\]>/Uism''$1'$description);
            
$link preg_replace('/<!\[CDATA\[(.+)\]\]>/Uism''$1'$link);

            echo 
"<p class=\"link\">\n";
            echo 
"<a href=\"".$link[1]."\" title=\"";
            if(
$encode != "no")
            {echo 
htmlentities($title[1],ENT_QUOTES,$encoding);}
            else
            {echo 
$title[1];}
            echo 
"\">";
            if(
$encode != "no")
            {echo 
htmlentities($title[1],ENT_QUOTES,$encoding)."</a>\n";}
            else
            {echo 
$title[1]."</a>\n";}
            echo 
"</p>\n";
            if(
$mode == || $mode == && ($description[1]!="" && $description[1]!=" "))
            {
                echo 
"<p class=\"description\">\n";
                if(
$encode != "no")
                {echo 
htmlentities($description[1],ENT_QUOTES,$encoding)."\n";}
                else
                {echo 
$description[1];}
                echo 
"</p>\n";
            }
            if (
$anzahl-- <= 1) break;
        }
        echo 
"</div>\n\n";
    }    


    

    
//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");
    }
    
    
getRssfeed($xml"heise"auto101);
    
?>
Vielen Dank schonmal für die Hilfe.
mynik ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 18.09.2011, 14:16  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Ruf das PHP-Script ohne Ajax auf und finde heraus, was es produziert
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 19.09.2011, 01:03  
Neuer Benutzer
 
Registriert seit: 19.08.2011
Beiträge: 6
PHP-Kenntnisse:
Anfänger
mynik befindet sich auf einem aufstrebenden Ast
Standard

Wenn ich das Script ohne Ajax aufrufe, wobei ich vorher natürlich die Übertragungsmethode auf POST ändern und einen Submit-Button hinzufügen muss,
macht das Script alles was verlangt ist und erzeugt keinen Fehler.

Hier nochmal das neue PHP-Script, wie gesagt keine Änderung bis auf POST und Submit, damit nicht von Ajax verarbeitet wird.
PHP-Code:
    <form action="rssget.php" method="POST">
    <select name="firma" onchange="showRSS(this.value)">
        <option value="">Select an RSS-feed:</option>
        <option value="Google">Google News</option>
        <option value="MSNBC">MSNBC News</option>
    </select>
    <input name="submit" type="submit" value="Senden">
    </form>

<?php
    
function getRssfeed($rssfeed$cssclass=""$encode="auto"$anzahl="10"$mode="0")
    {
        
// @file oeffnet den rssfeed und speichert ihn in ein Array    
        
$data = @file($rssfeed);
        
        
// Mittels implode wird aus dem Array und einem Leerzeichen als glue ein String
        
$data implode($data);
        
// Data String wird nach Items durchsucht "/Uism" U-Ungreedy I-Casecareless s-.Mod m-Multiline
        
preg_match_all("/<item.*>(.+)<\/item>/Uism"$data$items);
        
// Wird keine Encodierungsvariante angegeben, wird automatisch die jeweilige ausgelesen
        
if($encode == "auto")
        {
            
preg_match("/<?xml.*encoding=\"(.+)\".*?>/Uism"$data$encodingarray);
            
$encoding $encodingarray[1];
        }
        else
        {
            
$encoding $encode;
        }
        
        echo 
"<div class=\"rssOutput\">\n";
        
        
// Titel und Link zum Channel 
        
if($mode == || $mode == 3)
        {
            
$data preg_replace("/<item>(.+)<\/item>/Uism"''$data);
            
preg_match("/<title>(.+)<\/title>/Uism"$data$channeltitle);
            
preg_match("/<link>(.+)<\/link>/Uism"$data$channellink);

            
$channeltitle preg_replace('/<!\[CDATA\[(.+)\]\]>/Uism''$1'$channeltitle);
            
$channellink preg_replace('/<!\[CDATA\[(.+)\]\]>/Uism''$1'$channellink);

            echo 
"<h1><a href=\"".$channellink[1]."\" title=\"";
            if(
$encode != "no")
            {
                echo 
htmlentities($channeltitle[1],ENT_QUOTES,$encoding);
            }
            else
            {
                echo 
$channeltitle[1];
            }
            echo 
"\">";
            if(
$encode != "no")
            {
                echo 
htmlentities($channeltitle[1],ENT_QUOTES,$encoding);
            }
            else
            {
                echo 
$channeltitle[1];
            }
            echo 
"</a></h1>\n";
        }
        
        
// Titel, Link und Beschreibung der Items
        
foreach ($items[1] as $item
        {
            
preg_match("/<title>(.+)<\/title>/Uism"$item$title);
            
preg_match("/<link>(.+)<\/link>/Uism"$item$link);
            
preg_match("/<description>(.*)<\/description>/Uism"$item$description);

            
$title preg_replace('/<!\[CDATA\[(.+)\]\]>/Uism''$1'$title);
            
$description preg_replace('/<!\[CDATA\[(.+)\]\]>/Uism''$1'$description);
            
$link preg_replace('/<!\[CDATA\[(.+)\]\]>/Uism''$1'$link);

            echo 
"<p class=\"link\">\n";
            echo 
"<a href=\"".$link[1]."\" title=\"";
            if(
$encode != "no")
            {echo 
htmlentities($title[1],ENT_QUOTES,$encoding);}
            else
            {echo 
$title[1];}
            echo 
"\">";
            if(
$encode != "no")
            {echo 
htmlentities($title[1],ENT_QUOTES,$encoding)."</a>\n";}
            else
            {echo 
$title[1]."</a>\n";}
            echo 
"</p>\n";
            if(
$mode == || $mode == && ($description[1]!="" && $description[1]!=" "))
            {
                echo 
"<p class=\"description\">\n";
                if(
$encode != "no")
                {echo 
htmlentities($description[1],ENT_QUOTES,$encoding)."\n";}
                else
                {echo 
$description[1];}
                echo 
"</p>\n";
            }
            if (
$anzahl-- <= 1) break;
        }
        echo 
"</div>\n\n";
    }    


    

    
//get the q parameter from URL
    //$q=$_GET["q"];
    
if(isset($_POST['firma']))
    {
        
$q=$_POST['firma'];
    }
    
    
//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");
    }
    
    
/*Funktion uebergibt keine rssfeed Var */
    
if(isset($xml))
    {
        
getRssfeed($xml"heise"auto101);
    }
    
?>
Das Problem scheint also an dem Ajax-Script zu liegen, wobei ich einfach nicht draufkomme was daran denn falsch sein soll.
mynik ist offline   Mit Zitat antworten
Alt 19.09.2011, 01:19  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
getrss.php?q="+str
<form action="rssget.php"
Sorry, aber was erzählst Du uns hier?
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 19.09.2011, 01:22  
Neuer Benutzer
 
Registriert seit: 19.08.2011
Beiträge: 6
PHP-Kenntnisse:
Anfänger
mynik befindet sich auf einem aufstrebenden Ast
Standard

Hab es grad selbst bemerkt. : (

Was soll ich euch denn erzählen?
Das PHP-Script hat ohne Ajax funktioniert, da ich im Ajax-Script den Fehler gemacht habe und die falsche php Datei aufgerufen habe.

Vielen Dank für die Hilfe, auch wenn ich den komischen Umgangston nicht verstehe.
mynik ist offline   Mit Zitat antworten
Alt 19.09.2011, 01:26  
Neuer Benutzer
 
Registriert seit: 19.08.2011
Beiträge: 6
PHP-Kenntnisse:
Anfänger
mynik befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von mynik Beitrag anzeigen
Hab es grad selbst bemerkt. : (
Hat mich gewundert das Firebug ein "NOT FOUND: ....getrss.php?q=Google" ausgibt.

Was soll ich euch denn erzählen?
Das PHP-Script hat ohne Ajax funktioniert, da ich im Ajax-Script den Fehler gemacht habe und die falsche php Datei aufgerufen habe.

Vielen Dank für die Hilfe, auch wenn ich den komischen Umgangston nicht verstehe.
Hm, suche vergeblich den Beitrag löschen Button.


Edit 2: Ich wollte den speziellen Post löschen in dem ich mich selbst zitiere, da ich ursprünglich den Post weiter oben editieren wollte.

Geändert von mynik (19.09.2011 um 12:11 Uhr).
mynik ist offline   Mit Zitat antworten
Alt 19.09.2011, 08:52  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

den wirst du nicht finden, damit andere später anhand der Beiträge schneller zur Lösung kommen und nicht wieder selbst fragen (müssen) ...
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] COUNT und MAX in 1 SELECT coola Datenbanken 2 07.12.2010 22:12
[Erledigt] Select Box mit onChange 22hase JavaScript, Ajax und mehr 9 28.07.2010 12:12
[Erledigt] Intertabellarische Berechnungen, wie? dave303 Datenbanken 13 05.03.2010 11:58
Ajax Anwendung, reines Ajax oder Ajax und Html jackie1983 JavaScript, Ajax und mehr 5 09.02.2010 16:50
Ausgabe erfolgt nicht Extremefall PHP Tipps 2009 17 17.12.2009 19:51
Select WHERE Select J_Jara Datenbanken 4 01.12.2009 20:08
form action ohne select name auswahl djsky HTML, Usability und Barrierefreiheit 4 11.10.2009 17:29
[Erledigt] INSERT ... SELECT - nicht alle Spalten aus dem Select benutzen? kip Datenbanken 4 01.09.2009 13:06
[Erledigt] Select * where in (Select ...) Geschwindigkeitsproblem Wolla Datenbanken 14 20.05.2009 15:16
SQL select fehlerhafte Resultate. Ist PHP 64 Bit das Problem? peterw Server, Hosting und Workstations 6 21.04.2009 09:19
form action in include datei bei ajax Jojo_44 JavaScript, Ajax und mehr 17 24.01.2009 18:12
[Erledigt] Kein Ergebnis bei SELECT (MySQL 4.1.9) dr.e. Datenbanken 4 15.06.2008 19:54
[Erledigt] Daten aus einer Tabelle mit Form Select weiter geben ch4in PHP Tipps 2008 12 06.06.2008 21:42
[JavaScript] Event Handler in form select - Syntax? winfo_cologne HTML, Usability und Barrierefreiheit 5 29.03.2006 16:47
[Erledigt] 2 mal select 1 form PHP-Fortgeschrittene 1 01.09.2004 20:13

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php select ajax, onchange select box xajax, ajax.php select formular javascript, onchange ajax form, php ajax dropdown onchange include form, select ajax php, select menüs php und ajax, multiple auswahlbox \ohne select\, onselectchange mit ajax, php select class onchange, select onchange \ohne ajax\, ajax onchange falsch, php ajax select#, ajax rss ohne php, form onchange method get php, php datensatz suchen und anzeigen onchange, onchange ajax php, php onchange, onchange soll ein fenster mit inhalten angezeigt werden, formular onchange php function

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:33 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum