Datenbank mit Ajax modernisieren

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Ich geh davon aus, dass die ajaxPost-Funktion jetzt schon an der richtigen Stelle aufgerufen wird, nämlich beim Event Handler onclick des jeweiligen Buttons (in dem Fall ja erstmal löschen). Wenn der Button gedrückt wird, dann mach das und das...

    Allerdings kommt noch immer in dieser Zeile onClick='ajaxPost(\'ajax.php\', \'ajax&\'+getFormData(\'opt_haken\'),\'tabelle\',\'loeschen\');'>"; die Fehlermeldung wegen dem einem illegal character. Ich kann das nicht zugelassene Zeichen nicht finden und solange er an dieser Stelle einen Fehler sieht, wird die Funktion nicht aufgerufen.

    Wisst ihr, wo der Fehler ist?
  • Hey. Kaum schaut man länger nicht rein, wird das hier ganz schön kompliziert.^^

    Probier das mal aus. Einwenig abgeändert, funktioniert das ganze bei mir so:

    Quellcode

    1. onClick=\"ajaxPost('ajax.php', 'ajax&'+getFormData('opt_haken'),'tabelle','loeschen');\"




    Aber mal ein kleiner Einwurf in die Runde. Wie sieht es aus, wenn er ein Framework benutzen würde. Was halten die anderen davon? Gerade für das Problem mit dem Bearbeiten würde Prototype+Scriptaculous in Verbindung mit dem InplaceEditor das ganze ziemlich leicht ermöglichen. Naja und schöner nebeneffekt, die Ajax-Request sehen auch viel übersichtlicher aus :P

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Snowflake ()

  • Snowflake schrieb:

    Hey. Kaum schaut man länger nicht rein, wird das hier ganz schön kompliziert.^^

    Probier das mal aus. Einwenig abgeändert, funktioniert das ganze bei mir so:

    Quellcode

    1. onClick=\"ajaxPost('ajax.php', 'ajax&'+getFormData('opt_haken'),'tabelle','loeschen');\"




    Aber mal ein kleiner Einwurf in die Runde. Wie sieht es aus, wenn er ein Framework benutzen würde. Was halten die anderen davon? Gerade für das Problem mit dem Bearbeiten würde Prototype+Scriptaculous in Verbindung mit dem InplaceEditor das ganze ziemlich leicht ermöglichen. Naja und schöner nebeneffekt, die Ajax-Request sehen auch viel übersichtlicher aus :P


    Hey Snowflake, Danke für den Verbesserungsvorschlag :)

    Jetzt sieht die komplette Zeile so aus:

    Quellcode

    1. <input type='button' name='cmd_loeschen' value='Löschen' onClick=\"ajaxPost('ajax.php', 'ajax&'+getFormData('opt_haken'),'tabelle','loeschen');\");'>";


    Beim Ausführen bekomm ich jedoch folgende Fehlermeldung ajaxPost is not defined ?(
  • Billie schrieb:

    Ja, ich führe den Code in der ajax.php aus...leider kommt die Fehlermeldung immer noch.

    Wenn er meldet, dass die Funktion ajaxPost nicht definiert ist, dann kann er sie vielleicht nicht aus dem JavaScript-File aufrufen?...würde ich jetzt vermuten.



    Ich würde dir mal vorschlagen, einfach nachdem du die javascript datei eingebunden hast die funktion zu testen und zwar schreibst du das in den body bereich:

    Quellcode

    1. <a href="javascript:; onclick="ajaxpost('test');">func test</a>

    und in dem javascript part schreibst du: hinter der geschweiften klammer bei function ajaxPost(url, postData, callback, action) {
    einfach einmal ein alert(url); hin. der rest kann stehen bleiben. speicher das ab, und klick dann auf den link namens "func test" wenn jetzt ein fenster aufgeht, wo test drin steht, sind wir jedenfalls schonmal ein schritt weiter.
  • Ähhmm ja :P

    Also wenn du eine datei hast.. dateiname.js musst du sie includen das geht so:

    Quellcode

    1. <script type="text/javascript" src="dateiname.js"></script>


    Oder du hast den js-code direkt im script drin das geht so:

    Quellcode

    1. <script type="text/javascript">
    2. javascriptteil
    3. </script>


    Wenn du das nicht hattest, solltest du dir vllt mal den kompletten umgang mit Javascript anschauen. Zumindestens, dass du die Basics kannst.
    Ansonsten könnte das noch ein ganz schönes hin und her werden, wenn du gar keine Ahnung von Javascript hast ^^

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Snowflake ()

  • Also, ich arbeite z.Z mit drei Dateien. Einmal die verbindung.php, mit den Zugangsdaten, dann die ajax.php, die neben den Operationen auch HTML beinhaltet und das JavaScript File (java.js), mit der ajaxPost Funktion.

    Die Dateien findest Du im Anhang, (als txt-Dokumente, weil ich kein php und js hochladen kann)
    Dateien
    • ajax.txt

      (3,24 kB, 156 mal heruntergeladen, zuletzt: )
    • java.txt

      (1,26 kB, 153 mal heruntergeladen, zuletzt: )
    • verbindung.txt

      (303 Byte, 164 mal heruntergeladen, zuletzt: )
  • Hat dir Firebug nur die eine Fehlermeldung gegeben? Also:

    ajaxPost is not defined
    [Break on this error] ajaxPost("test");
    +

    Da gab es nämlich noch eine zweite Meldung.

    Kleiner Syntaxfehler in der Javascriptdatei. Ändere das hier:

    Quellcode

    1. if(type.match(/^(checkbox)$/i) && el.checked))


    durch:

    Quellcode

    1. if(type.match(/^(checkbox)$/i) && el.checked)


    Einfacher fehler, am Ende war eine Klammer zu viel. Dadurch entstand ein Fehler, und die funktion war "unbrauchbar"
    Wenn du das änderst, klappt es.
  • Hi Snowflake, es lag tatsächlich an der einen Klammer :thumbup:

    Ich hatte auch nur die eine Fehlermeldung, die zweite hat er mir komischerweise nicht angezeigt.

    Jetzt zeigt er mir aber berechtigterweise die Fehlermeldung an, dass die Funktion getFormData nicht definiert ist. Diese ist in dem JavaScript tatsächlich nicht vorhanden. Brauchen wir diese Funktion tatsächlich? Ich habe sie hier schon einmal gesehen, bzw. es gibt sie in der Wiki.
  • student2312 schrieb:


    Dann brauchst du aus dem Wiki die Funktionen ajaxPost() und getFormData()
    :P



    Quellcode

    1. function getFormData(form, asArray) {
    2. var ret;
    3. var add = function(n, v) {
    4. if(asArray) {
    5. if(ret == null) ret = new Array();
    6. ret[n] = escape(v);
    7. } else {
    8. ret = (ret == null ? '' : ret+'&') + n +'='+ escape(v);
    9. }
    10. };
    11. for(var i=0; i<form.elements.length; i++) {
    12. var el = form.elements[i];
    13. var type = (el.type || '');
    14. if(type.match(/^(text|hidden|textarea)$/i) || (type.match(/^(radio|checkbox)$/i) && el.checked)) {
    15. add(el.name, el.value);
    16. } else if(el.nodeName.match(/^select$/i)) {
    17. for(var j=0; j<el.options.length; j++) {
    18. if(el.options[j].selected) {
    19. add(el.name, el.options[j].value);
    20. }
    21. }
    22. } else if(el.nodeName.match(/^textarea$/i)) {
    23. add(el.name, el.value);
    24. }
    25. }
    26. return ret != null ? ret : (asArray ? new Array() : '');
    27. }
    Alles anzeigen


    Zu finden hier: Wiki

    Hab mir den Javascript-teil nicht großartig angeschaut. Da student2312 schon Ahnung hat, und das wohl seine richtigkeit haben wird. ^^
  • Hey, sorry für die Sendepause...ich war in den letzten Tagen nicht Zuhause und hatte keinen Internetanschluss. :whistling:

    Also, ich bin immer noch dabei und habe jetzt die Funktion getFormData in den Java-Script Teil eingefügt.

    Jetzt bräuchte ich allerdings etwas Hilfe, um die Funktion anzupassen. Und zwar meldet Firebug beim Aufruf der Funktion folgendes:


    form.elements is undefined
    getFormData("opt_haken", undefined)
    onclick(click clientX=50; clientY=131)
    for(var i=0; i<form.elements.length; i++){


    getFormData ist dann der Aufruf aus der ajax.php, ich nehme an, dass ihm die Form-Bezeichnung fehlt? bzw. wir diese nicht übergeben und diese dann auch im JavaScript-Teil fehlt.
  • Hey ahm ja..ich muss mir das nachher mal in Ruhe angucken, vllt kann dir aber auch d0nut oder student2312 erstmal weiterhelfen...

    Ist jetzt immoment was komisch, weil das Formargument wird ja übergeben mit getFormData("opt_haken")...
    asArray ist hier ja in dem Moment egal, da er ja nicht mitübergeben wird und es fidnet ja dementsprechend auch ein Befehl statt in der Funktion der ausgeführt wird, wenn asArray nicht existiert.