Bei GET Übergabe verschwindet der String


Sprint

Erfahrenes Mitglied
Hallo zusammen,

für ein Formular hab ich mir eine Ajax Funktion gebaut, die die Formulardaten in eine Datenbank schreibt.
Hier erst einmal das Script:
HTML:
<script language="JavaScript">
function ajaxFunction(lstring){
	var ajaxRequest;  // The variable that makes Ajax possible!
	
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser broke!");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
//			document.myForm.time.value = ajaxRequest.responseText;
		}
	}
	try {
		alert(lstring);
		ajaxRequest.open("GET", "writeplist.php?str=" + lstring, true);
	} catch (e) {
		alert("Daten konnten nicht eingetragen werden!");
	}
	ajaxRequest.onreadystatechange = handleResponse;
	ajaxRequest.send(null);

function handleResponse() {
    if(ajaxRequest.readyState == 4){
        var response = ajaxRequest.responseText;
alert(response);

 //           document.getElementById(content).innerHTML = response;
    }
}

}

</script>

Das PHP Script, das die Daten schreiben soll, sieht so aus:
PHP:
$wertearray = explode('*',$_GET['str']);
print_r($wertearray);
$sender = mysql_query("insert into punktliste (pruefnr, punkte, kommfarbe, kommentar) 
		values('$wertearray[0]', '$wertearray[1]', '$wertearray[2]', '$wertearray[3]');");
if (!$sender){
	$sql = "update punktliste set punkte = '$wertearray[1]', kommfarbe = '$wertearray[2]', kommentar = '$wertearray[3]' where pruefnr = '$wertearray[0]';";
	$erg = mysql_query($sql, $verbindung);
	if (!$erg)
		die("<font color=\"red\">4 Warnung: schreiben in die Datenbank fehlgeschlagen</font><br>wenden Sie sich bitte an den Webmaster");
}

Das funktioniert, wenn ich das Script mit einem festen Aufruf starte, z.B. so:
Code:
ajaxFunction("502932*!2!3!4*1*test 3");
Wenn ich das ganze im Formular mache und nach der Verarbeitung so aufrufe,
Code:
ajaxFunction(punktliste);
kommen die Daten bis zum .open und sind dann verschwunden. Vom alert davor wird mir immer der korrekte String angezeigt, das alert(response); am Schluß gibt mir beim fixen String das von PHP erzeugte Array richtig aus, beim anderen nichts. Und dementsprechend wird natürlich auch nichts in die Datenbank geschrieben.
Es ist in beiden Fällen das identische Script. Warum funktioniert es mal und mal nicht? Hat da jemand eine Antwort für mich?
 
Zuletzt bearbeitet:

javaDeveloper2011

Erfahrenes Mitglied
Hi,

schon mal alert(punktliste); versucht, da wo ajaxFunction(punktliste); aufgerufen wird?
zeig vielleicht nochmal den Formular-Code...
 

Sprint

Erfahrenes Mitglied
Das hatte ich auch schon, und auch da waren die Daten korrekt. Es hat sich inzwischen aber herausgestellt, daß es am Browser lag. Webkit Browser, also Safari und Chrome, kommen mit dem Code scheinbar nicht zurecht. Firefox hat die Datenbank immer richtig bestückt.
 

Neue Beiträge