AJAX Tabellenzeile löschen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • AJAX Tabellenzeile löschen

    Hi.

    Problem ist vermutlich trivial, aber irgendwie komme ich nicht weiter. Ich habe ein simples Beispiel zum darstellen von Daten aus einer Datenbank. Klicke ich auf den entsprechenden Namen, wird mir ein XML Dokument zurückgegeben und die zugehörigen Werte angezeigt - alles super.
    Jetzt würde ich gerne Datensätze auch löschen dazu (siehe Quellcodeausschnitt weiter unten). Löschen klappt auch soweit, jedoch wird die entsprechende Tabellenzeile nicht gelöscht! Der Befehl an sich funktioniert. In Kombination mit besagtem Quellcode, funktioniert er nicht mehr. Debug Möglichkeiten? Vielleicht könnt ihr mir einen Tip geben, danke.

    PHP-Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
     <title>AJAX Test</title> 
    <script type="text/javascript">
    <!--
    var request = false;

    function setDelete(id,pointer){
     if (window.XMLHttpRequest)
     {
      request = new XMLHttpRequest(); //Mozilla, Chrome, Safari
     }
     else if (window.ActiveXObject)
     {
      try {
       request = new ActiveXObject('Msxml2.XMLHTTP');  // IE 5
      } catch (e){
       try {
        request = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
       } catch (e) {}
      }
     }
     
     if (!request){
      alert("Es konnte keine Instanz erzeugt werden!");
      return false;
     } 
     else 
     {
      var url = "delete.php";
      var value = document.getElementById('id_'+id).innerHTML;
      request.open('post', url, true);
      request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
      request.send('id='+value);
      request.onreadystatechange = interpretDelete(pointer); 

     }
    }

        function interpretDelete(pointer) {
            switch (request.readyState) {
                case 4:
                    if (request.status != 200) {
                        alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"+request.status);
                    } else {
                        var content = request.responseText;
                        document.getElementById('content').innerHTML = content;
                        document.getElementById('myT').deleteRow(pointer); // deleteRow wird nicht ausgeführt
                    }
                    break;
                default:
                    break;
            }
        }

    //--> 
    </script> 
    </head>
    <body>
    <?php
    //...
    $sql mysql_query("SELECT * FROM mitglieder");
    $pointer 0;

    echo 
    "<table id=\"myT\">";
    While (
    $row mysql_fetch_array($sql)){
     echo 
    "<tr><td><a id=\"source_".$row["id"]."\" href=\"javascript:setRequest('".$row["id"]."')\">".$row["name"]."</a></td>";
     echo 
    "<td><a id=\"id_".$row["id"]."\" href=\"javascript:setDelete('".$row["id"]."','".$pointer."')\">".$row["id"]."</a></td></tr>";
     
    $pointer++; 
    }
    echo 
    "</table>";
    ?>
      <br />
      <span id="content"></span>
      <br />
      <table>
       <tr>
        <td>Name</td><td>:</td><td><span id="name"> - Eintrag wählen - </span></td>
       </tr>
       <tr>
        <td>Ort</td><td>:</td><td><span id="ort"> - Eintrag wählen - </span></td>
       </tr>
       <tr>
        <td>Telefon</td><td>:</td><td><span id="telefon"> - Eintrag wählen - </span></td>
       </tr>
      </table>
    </body>
    </html>
    mfg streuner
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
    der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

    "Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"

  • #2
    Zitat von streuner Beitrag anzeigen
    Code:
      request.onreadystatechange = interpretDelete(pointer);
    Mach dir klar, dass du mit dieser Schreibweise die Funktion an dieser Stelle sofort aufrufst, und nur ihr Rückgabewert dem Eventhandler zugewiesen wird.

    Zum Aufruf von Funktionen an so einer Stelle mit Übergabe von Parametern eignen sich bspw. Closures.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Ahhhhh...danke! Guter Tipp. Werde ich mich gleich drum kümmern

      mfg streuner
      Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
      der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

      "Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"

      Kommentar

      Lädt...
      X