Mit Ajax einen Datenbank Eintrag machen

  • Moin,


    hab da ein kleines Problem. Ich möchte mittels Ajax einen Datenbank Eintrag machen. Leider macht er das nicht, so wie ich das gerne hätte.
    Hat jemand eventuell eine Idee?



    Hier einmal der Button zum Absenden:


    Hier einmal die Ajax:


    Und die createUser.php


    Also er macht überhaupt keinen Eintrag und zeigt mir auch keine alerts auch nicht wenn ein Feld leer ist.


    Hat jemand eine Idee?
    Wäre sehr dankbar :)





    ~ Marvin

  • Hast du mal in die Konsole der Entwicklertools geschaut ob ein JavaScript-Fehler vorliegt?

    Hast du geprüft ob der Click-Handler funktioniert (z.b. ein einfaches Alert)?

    Hast du in den Entwicklertools geschaut ob ein Request abgeschickt wird?

    Hast du im PHP-Script mit einer Debugausgabe geschaut ob die Werte ankommen?

    Hast du in den PHP-Errorlog geschaut?



    Was mir auffällt:

    - Das <form>-Element ist an sich unnötig.

    - Dein <button> braucht ein type="button". Default ist submit, was die Seite gleich mal abschickt.

    - Der Click-Handler für den Button muss nicht in die document.ready-Funktion.

    - Im PHP-Teil ist das umkopieren von $_POST in eine Variable absolut unnötig. POST ist superglobal, du kannst das im ganzen Script benutzen.

  • Also, ich habe einen Fehler gesehen. Habe einige klammern vertauscht. Nun klappt zumindest das Eintragen in die Datenbank. Auch das "alert" wenn einige Felder leer sind, wird angezeigt. Nur wird das "alert" bei "success" nicht angezeigt.


    Fehler werden keine angezeigt.

  • Hast du die Punkte in meinem Beitrag behoben? Vor allem den Zweiten?


    In den Entwicklertools siehst du was Dein Request zurückgibt. Wenn der Status nicht 200 ist springt er nicht in den Success-Teil.

  • Ja hab deine Fehler behoben.
    Wo genau soll ich den Status in den Entwicklertools den sehen? Weil mir wird nirgends was angezeigt.

  • Du solltest Dich mit den Dev-Tools Deines Browsers bekannt machen. Gerade wenn du mit AJAX-Requests programmieren willst, ist das ensentiell.


    Ich weiss nicht was du für einen Browser verwendest aber unter Netzwerk oder Network sieht man das recht schnell.

  • naja, nicht wirklich.

    Weil das alert im Suchen Teil trotzdem nicht ausgeführt wird.


    Mit "er springt in den success Teil" meinte ich nur, dass er den Status 200 angezeigt.


    Wo du meintest, das er nur in den success Teil springt, wenn er Status 200 anzeigt.

  • Hast du es jetzt hinbekommen ?

    Falls nicht änder dein Script mal so

    Wenn du wirklich in der Konsole geschaut hast , dann hast du das wohl übersehen.

    In der Konsole steht da

     Uncaught SyntaxError: missing ) after argument list 

    Die Zeile könnte für Neulinge etwas verwirrend sein, weil eigentlich kein ) fehlt.

    Hättest du uns den Fehler mitgeteilt , hätte man dir schneller helfen können.

    Da wo der Fehle erkannt wurde, fehlte theoretisch schon eine Klammer, aber die Konsole wusste da ja noch nicht das ein success kommt und deswegen die Klammer erst später kommt.


    In Zukunft immer die Fehler posten , gerade wenn dich danach einer Fragt

    Dieser Beitrag wurde bereits 4 Mal editiert, zuletzt von basti1012 ()

  • Danke für den Hinweis basti1012 habe den Fehler selber natürlich gesehen. Aber habe den selber behoben und trotzdem war das nicht die Lösung. Daher habe ich den Fehler nicht mehr mit reingeschrieben.

    Wie gesagt. Beim Success passiert leider nichts. Der Status 200 wird angegeben. Und es wird kein weiterer Fehler mit angezeigt. Er erstellt auch auf jeden fall den Datenbank Eintrag. Wie gesagt, nur das das er beim Success keinen Alert ausgibt, ist aktuell der Fehler.

  • Poste mal dein Javascript Code.

    Ich habe ja gelesen das du die klammern behoben hast.

    Da aber der Eintrag geht , aber der success nicht ,habe ich mal ausprobiert wie das überhaupt gehen soll.

    Man kann die klammern so falsch setzen, dass es sogar geht, so dass die Konsole kein Fehler anzeigt.

    Das würde dann so aussehen

    Das sendet, aber es kommt kein success. Schon interessant.

    Bist du sicher das deine Klammern so sind wie ich in #13 geschrieben habe ?

    Zeig mal dein JS code wie du ihn jetzt hast.

    ggf. das PHP Script auch nochmal, obwohl ich da nichts finde, was den success in JS blocken könnte.


    Anstatt den alert alert("Erfolg!");   könntest du da console.log(data) reinschreiben, ist beim debuggen besser

    Dieser Beitrag wurde bereits 2 Mal editiert, zuletzt von basti1012 ()


  • Hab auch das mit console.log mal getestet. Aber dort passiert auch nichts.


    //Edit hab das ganze noch in einem anderen Browser gemacht:



    Mein JS Code:



    PHP


    MarvinTLA Meinen Hinweis aus #12 schon umgesetzt?

    Hatte ich gestern noch vor. Bin aber gestern nicht mehr dazu gekommen.

  • Code
    1. jquery.3.2.1.min.js:4 POST http://xxx.xxx.xxx.xx/includes/createUser.php 500 (Internal Server Error)
    2. jquery.3.2.1.min.js:4 XHR failed loading: POST "http://xxx.xxx.xxx.xx/includes/createUser.php".

    Was soll das den jetzt heißen?

    Hattest du nicht gesagt das die Einträge in der DB geschrieben wurden?

    Kommt mir jetzt etwas komisch vor?

    Du mußt uns schon die richtigen Infos geben ,sonst kann man dir nicht richtig helfen.

    Einmal ein 500 Error

    Und einmal ein failed loading.


    Hast du mal in der Konsole geschaut was das createUser.php zurückgibt?


    Dein JS Code funktioniert bei mir ohne Probleme.

    Versuch mal das was Sempervivum in 12 schrieb.

    Ich weiß zwar nicht, ob das wirklich helfen soll, aber sempervivum kennt sich in den Sachen besser aus.

  • Sorry. War mein Fehler. Konsolenfehler ist wieder weg.
    Habe ganz einfach oben im Code eine "Geschweifte - Klammer" vergessen. Nach dem catch Teil am Ende. (Die ist mir aber beim Einrücken des Codes verloren gegangen)


    Und als kleine Info. Es klappt jetzt alles. Fragt mich nicht wieso, oder was ich gemacht habe. Ich habe nur den Text 1x anstatt des Alert den "console.log" Teil eingefügt und es am ende wieder Rückgängig gemacht und sonst nur nochmal zum Testen den <form> Teil entfernt.

    Das mit dem <form> Teil entfernen habe ich allerdings schonmal gemacht und es ging trotzdem nicht. Vielleicht irgendetwas geändert wo ich nicht besonders drauf geachtet habe.

    So um es jetzt einheitlich zu machen.



    1. Wie gesagt. Der 500 Error kam durch eine Nicht vorhandene Klammer.

    2. Ich habe letztens das <form> weggemacht und es ging nichts mehr.

    3. Ich habe heute noch einmal <form> weggemacht und es ging.



    Das Thema ist damit für mich beendet. Ich bin nur Froh das es klappt und bedanke mich bei JEDEM der mir geholfen hat und verschiedene Lösungsanschläge vorgeschlagen hat.