ingobar: AJAX: Firefox liefert auf einmal eine Fehlermeldung

Beitrag lesen

Guten Morgen zusammen,

einen Funktion von mir funktioniert nicht mehr. Das liegt wahrscheinlich daran, dass ich inzwischen einen Kontruktion habe, die nicht mehr läuft.

Folgenden Gedanken habe ich dabei gehabt: In einem Formular lassen sich die Namen von allen Schüler einer Klasse eingeben und speichern. Es lässt sich aber auch nur ein einzelner Schüler in einer Klasse einfügen.

Um das umzusetzen, habe ich zwei verschieden js-Funktionen:

  
function schuelernamen_speichern() {  
 editklasse_ajax_db_anfrage = null;  
 editklasse_ajax_db_anfrage = erzeugeDB_Anfrage();  
 if (editklasse_ajax_db_anfrage!=null) {  
  var sAnzahl = document.getElementById("schuleranzahl").options[document.getElementById("schuleranzahl").options.selectedIndex].value;  
  var url = "add_schuler_to_klasse.php";  
  var data2send = "";  
  for (var i=1;i<=sAnzahl;i++) {  
   data2send = "s_name="+escape(document.getElementById("name_"+i).value);  
   data2send += "&s_vname="+escape(document.getElementById("vname_"+i).value);  
   data2send += "&kl_id="+escape(document.getElementById("kl_id").value);  
   editklasse_ajax_db_anfrage.open("POST", url, true);  
   editklasse_ajax_db_anfrage.onreadystatechange = zeigeBestaetigung_schuler;  
   editklasse_ajax_db_anfrage.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");  
   editklasse_ajax_db_anfrage.send(data2send);  
  }  
 } else {  
  document.getElementById("feedback_data").innerHTML = "Es konnte keine Verbindung zum Server aufgebaut werden.";  
  document.getElementById("feedback").style.visibility = "visible";  
  document.getElementById("speichern").focus();  
  
 }  
}  
  
function single_schueler_speichern() {  
 editklasse_ajax_db_anfrage = null;  
 editklasse_ajax_db_anfrage = erzeugeDB_Anfrage();  
 if (editklasse_ajax_db_anfrage!=null) {  
  var url = "add_schuler_to_klasse.php";  
  data2send = "s_name="+escape(document.getElementById("single_name").value);  
  data2send += "&s_vname="+escape(document.getElementById("single_vname").value);  
  data2send += "&kl_id="+escape(document.getElementById("kl_id").value);  
  editklasse_ajax_db_anfrage.open("POST", url, true);  
  editklasse_ajax_db_anfrage.onreadystatechange = zeigeBestaetigung_schuler;  
  editklasse_ajax_db_anfrage.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");  
  editklasse_ajax_db_anfrage.send(data2send);  
 } else {  
  document.getElementById("feedback_data").innerHTML = "Es konnte keine Verbindung zum Server aufgebaut werden.";  
  document.getElementById("feedback").style.visibility = "visible";  
  document.getElementById("speichern").focus();  
  
 }  
}  

Beide rufen die gleiche php-Datei mit folgendem Code auf:

  
 include 'inc/inc_config.php';  
 $db = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die(mysql_error());  
 @mysql_select_db(MYSQL_DATABASE,$db) or die(mysql_error());  
  
 $s_name = mysql_escape_string($_POST['s_name']);  
 $s_vname = mysql_escape_string($_POST['s_vname']);  
 $kl_id = mysql_escape_string($_POST['kl_id']);  
  
 $schuler_schon_drin_test = @mysql_query("SELECT * FROM schuler WHERE name='$s_name' AND vname='$s_vname'");  
 $jawoll = mysql_num_rows($schuler_schon_drin_test);  
 if ($jawoll>0) {  
  echo "Den Sch&uuml;ler <i>".$s_vname." ".$s_name."</i> gibt es in der Klasse bereits.<br>Korrigieren Sie eventuelle Tippfehler oder geben Sie mehrere Vornamen ein.";  
 } else {  
  $myglobals = mysql_fetch_row(@mysql_query("SELECT schueler_id FROM globals"));  
  $schulerId = $myglobals[0]+1;  
  $update_globals = @mysql_query("UPDATE globals SET schueler_id='$schulerId'");  
  
  $insertSchuler = @mysql_query("INSERT INTO schuler (id,name,vname,kl_id) VALUES ('$schulerId','$s_name','$s_vname','$kl_id')");  
  echo "Sch&uuml;ler neu angelegt";  
 }  

Einen einzelnen Schüler einzufügen klappt. Aber viele klappt leider nicht. Ich bekomme folgende Fehlermeldung:

Fehler: uncaught exception: [Exception... "Component returned failure code: 0x804b000f [nsIXMLHttpRequest.setRequestHeader]"  nsresult: "0x804b000f (<unknown>)"  location: "JS frame :: http://127.0.0.1/~username/js/dateiname_ajax.js :: schuelernamen_speichern :: line 64"  data: no]

function zeigeBestaetigung_schuler(){
 if (editklasse_ajax_db_anfrage.readyState == 4) {
    if (editklasse_ajax_db_anfrage.status == 200) {
usw.

Die Meldung wird durch die Status-Abfrage ausgelöst. Ich hatte gedacht, dass der Fehler durch

editklasse_ajax_db_anfrage.onreadystatechange = zeigeBestaetigung_schuler;

ausgelöst wird, da es durch die Schleife mehrfach durchlaufen wird. Also hatte ich rausgenommen. Ohne Erfolg.

Hat hier jemand eine Idee woran es liegt und eventuell einen Lösung?