Probleme mit Ajax und WP

  • Hallo zusammen,
    ich breche mir hier schon seit Tagen einen ab.
    Ich möchte mit folgendem Code (alles in einer Datei) einfach nur Daten abspeichern.
    Das funktioniert aber nicht.
    Ich erhalte bei bestätigen des Buttons in der Console die Meldung: Bad request (400)
    Habt Ihr eine Idee, was das Problem ist?
    Wahrscheinlich wieder nur so eine Kleinigkeit :-)

    Lieben Dank im Voraus.

    Jürgen


    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • ajaxurl ist wo definiert?

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Hi, ja, stimmt, hatte ich in den ganzen Versuchen vergessen.
    Funktioniert dennoch nicht :(


  • Link zur Seite, wo das so aktiv ist?

    Der Code bindet keine jQuery Bibliothek ein, schwer vorstellbar, dass da im Browser überhaupt etwas passiert ausser einem Scriptfehler. Dazu fehlt die WordPress Einbindung für den PHP-Code, [FONT=Courier New]add_action()[/FONT] dürfte damit einen PHP Fehler erzeugen, und dazu gibt der AJAX-Code gar nichts zurück. So kann man schwer helfen.

  • Action muss 'check_datainsert' lauten nicht 'datainsert'.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • OK.
    Ich habe jetzt JQuery eingebunden und diese Fehlermeldung kam jetzt auch nicht mehr.
    Dennoch erscheint in der Console immer noch "Bad Request"
    Der Link dazu der Seite. Habe ich jetzt mal ins Frontend gebaut, lautet: http://dev.offerj.de/2601-2/

    Der Aktuelle Code:

  • Die [FONT=Courier New]add_action()[/FONT] sollten nicht in der Template Datei [FONT=Courier New]inserttest.php[/FONT] aufgerufen werden, sondern immer über das Theme in [FONT=Courier New]functions.php[/FONT] o.ä. oder ein Plugin. Beim Ajax Aufruf sind diese Actions sonst nicht bekannt.

  • OK.
    Ich habe nun die add_action in die functions.php ausgelagert. Bad Request blieb gestehen.
    Dann habe ich

    Code
    data : {
                action    : 'datainsert'
            },
    in
    data : {
                action    : 'check_datainsert'
            },

    geändert. Bad request war verschwunden, aber ich bekomme im Ajaxteil nun eine fehlerhafte Succsess-Meldung

  • Dein Ajax Aufruf gibt derzeit das hier zurück, siehe auch Netzwerk Tab im Browser:

    Code
    Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'datainsert' not found or invalid function name in /is/htdocs/wp10652[...]rips/wp-includes/class-wp-hook.php on line 292
    0


    Vermutlich sieht [FONT=Courier New]add_action()[/FONT] Deinen PHP Code nicht.

    Der PHP Code selbst gibt wie bereits beschrieben sonst nichts verwertbares zurück, nur die 0 weil wohl wp_die() fehlt.

  • Ich glaube, ich sehe den Wald vor lauter Bäumen nicht.
    Ich poste mal meine Dateie (Inhalte) hier. Vielleicht hilft das besser bei der Auf(Er)klärung :-)
    inserttest.php

    und die Functions.php

  • Jetzt ist die [FONT=Courier New]Warning: call_user_func_array() ..[/FONT] weg, gut.

    Die [FONT=Courier New]function check_datainsert()[/FONT] gibt weiterhin nichts zurück und es fehlt das [FONT=Courier New]wp_die()[/FONT] lt. Ajax Anleitung.

  • Sorry, helfe mir mal auf die Sprünge.
    Was soll die funktion check_datainsert denn zurückgeben. Die soll ja nur etwas ausführen.
    Ich blicke da nicht durch. :-(

  • Dein JavaScript Code erwartet eine [FONT=Courier New]response[/FONT] und entscheidet anhand des Inhalts, was im Browser angezeigt wird.

    Also solltest Du in der PHP Funktion wohl was zurückgeben, das irgendwie zum erfolgreichen oder nicht erfolgreichen Ausführen des PHP Codes auf dem Server passt. Daran sieht man dann im Browser, ob es geklappt hat oder nicht, das wäre zumindest das, was Dein JavaScript Code derzeit vorsieht. Aus irgendwelchen Gründen hast Du den ja so geschrieben.

    Genereller Tipp zum Debugging von Ajax: Im Netzwerk Tab der Browser Konsole (google) kann man in der Antwort des Requests sehen, was von WordPress zurückgegeben wird, derzeit eine 0 (Null) wg. des fehlenden [FONT=Courier New]wp_die()[/FONT], siehe auch oben...

    6 Mal editiert, zuletzt von b3317133 (1. Juni 2021 um 15:22)

  • Hi Leute,
    es funktioniert.
    Ich habe das auch daran fest gemacht, dass mir keine Datensatz in die DB geschrieben wurde.
    Da war ein Fehler im SQL-String ;)

    Danke für die Hilfe :)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!