Zum Inhalt springen

Ajax Funktion in eigene Erweiterung einbinden

Erstellt am 23. September 2008 · 8 Antworten · letzte Antwort am 24. September 2008

Tags: Frage

kuan yin ·

Hallo, Ich möchte zwei Selektbox in mein Formular einfügen. Der augewählte Wert der zweite Selektbox hängt vom ersten Selektbox ab.
Wo kann ich in class.tx_extname_pi1.php Ajax einfügen damit das Formular nicht neu geladen wird?

Der erste selektbox enthält eine Liste von Sport aus der Datenbank, und der zweite selektbox soll eine Liste von Spieler der ausgewählte Sport anzeigen. Alle Daten sind in der Datenbank gespeichert(Sport und Spieler).

Weiß jemand wie das geht?

kuan yin ·

Ich weiß immer noch nicht wie die Ajax Quellcode in meine Klasse einfügen soll
Ich habe die Javascript Funktion in die Klasse eingefügt, und weiß nicht wie ich die Funktion go() in mein Formular aufrufe.

function jsaktion(){
	
      $jscript = '
               function getXhr(){     
                                var xhr = null;      
		if(window.XMLHttpRequest) // Firefox und andere Browser    
				   xhr = new XMLHttpRequest();      
		else if(window.ActiveXObject){ // Internet Explorer      
			 try {     
			       xhr = new ActiveXObject("Msxml2.XMLHTTP");     
			       } catch (e) {     
	           xhr = new ActiveXObject("Microsoft.XMLHTTP");     
			            }     
				}     
		else {       
	  alert("Ihr Browser unterstützt kein XMLHTTPRequest Objekt...");      
				   xhr = false;      
				}      
                                return xhr;     
			}     
               function go(){

				var xhr = getXhr();
				
		 xhr.onreadystatechange = function(){
		   if(xhr.readyState == 4 && xhr.status == 200){
	       
							    
 derselect = xhr.responseText;
document.getElementById("spieler").innerHTML = derselect;
							      
						       }
				
						      }
xhr.open("POST","pi1/class.tx_jgextname_pi1.php",true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	sel = document.getElementById("sport");
idsport = sel.options[sel.selectedIndex].value;
    xhr.send("Idsport="+idsport);
		    
			}';
			
		
	
   }

Wie kann ich die Variable Idsport in meine Abfrage für Spieler benutzen. Der erste selektbox funktioniert aber der zweite ist noch leer

einpraegsam.​net ·

Schau mal in die lib/class.tx_powermail_countryzones.php von powermail - vielleicht wird es dann klarer.

Bei Änderung im Dropdown wird hier über Ajax (XAJAX) die php Funktion addZoneSelector() aufgerufen.

Grüße, Alex

kuan yin ·

Hier ist die Abfrage für Sport

Sport:
<select style="width:230px;" name="sport" id="sport" onchange="go()"><option value="-1"></option>';
			
		 // Nehme alle Sport und fülle die Selectboxen damit
	
$query = mysql_query(" SELECT * FROM tx_jgextname_sport  WHERE DELETED = 0 ");
while($result = mysql_fetch_array($query))
				{
			       
				      $content .= '<option value='.$result['uid'].'>'.$result['bezeichnung'].'</option>';
				 }

Die zweite Abfrage für Spieler ist

Spieler:
<select style="width:230px;" name="spieler" id="spieler" ><option> </option>';
		  
 //Fülle die Daten mit Spieler, die zu ausgewählte sport gehören
		  if (isset($postlist['Idsport']))
		  {
	$queryspieler = mysql_query(" SELECT * FROM tx_jgextname_spieler
		WHERE sportid =".$postlist['Idsport']." ");
				while($result = mysql_fetch_array($queryspieler))
				{
				  
$content .= '<option value='.$res['uid'].'>'.$res['spielername'].'</option>';
				 
				}     
			$content .= '</select>';
		  }
kuan yin ·

Schau mal in die lib/class.tx_powermail_countryzones.php von powermail - vielleicht wird es dann klarer.

Ich habe diese Datei nicht in Ordner lib. Oder habe ich die Erweiterung nicht Komplet heruntergeladen?
Grüße
Kuan yin

kuan yin ·

Ich habe meine Quellcode in 2 einfache Php Datei eingefügt es gibt ein Datei sport.php und spieler.php, die Abfrage funktionniert wunderbar auf mein Xampp (localhost)und die Felder werden genau so ausgefüllt, wie ich es wollte.
Wie kann ich das selbe in meine typo3 Klasse machen?
Ich habe eine zweite Klasse erstellt class_jgextname_ajaxform.php mit dem zweiten selectbox und zweite abfrage. Ich bekomme den Fehler

Warning: Cannot modify header information - headers already sent by (output started at /var/www/htdocs/typo3conf/ext/jg_extname/pi1/class.tx_jgextname_ajaxform.php:1) in /usr/share/php/typo3_src-4.2.1/typo3/sysext/cms/tslib/class.tslib_fe.php on line 3221
Ich weiß nicht mehr was ich machen soll #angry#

kuan yin ·

Hallo einpraegsam,

Schau mal in die lib/class.tx_powermail_countryzones.php von powermail - vielleicht wird es dann klarer.

Bei Änderung im Dropdown wird hier über Ajax (XAJAX) die php Funktion addZoneSelector() aufgerufen.

Grüße, Alex

Ich habe die Klasse gefunden in online Repository. Ich hatte die alte Powermail Version.Weiß du wie ich ein update von powermail in Ext Manager machen kann? oder muss ich alles deintallieren und die neue Version installieren?

Wenn ich jetzt eine Funktion wie addZoneSelector($value) schreiben würde, würde ich das in eine andere klasse Schreiben?