Frage: PHP Script über AJAX Request aufrufen

  • Hallo, bitte um Hilfe mit meiner Wordpress Seite.

    Ich möchte dort ein PHP Script ausführen über AJAX und schaffe es aber nach stundenlangem Probieren immer noch nicht.

    2 Files habe ich:


    1) useAPI.php - mein selbst geschriebener Source Code in php (also so nen php-Script).

    Zitat

    <?php echo "adsf";
    ?>


    2) signup.html - darin soll über einen Ajax Request das useAPI.php Script aufgerufen werden.


    Das signup.html ist nicht direkt in meine Wordpress Seite eingebunden, sondern wird an einer Stelle nur über einen Link aufgerufen und als HTML halt dann dargestellt. Ist nicht schön, war aber die einfachste Lösung.


    Ich habe mal einen AJAX post bzw. AJAX get request probiert im signup.html, doch es funktioniert nicht.

    Fehlermeldung (egal was ich mache) in Safari beim Ajax Request: "Beim Laden der Ressource ist ein Fehler aufgetreten". Das useAPI.php wird rot angezeigt unter Resscourcen/Scripts in der Entwickler Konsole von Safari und wird offenbar nicht gefunden oder so.


    Nachdem ich schon fast alles probiert habe, stellt sich die Frage, ob sowas überhaupt machbar ist in Wordpress, oder ob man da gewisse configs, htaccess etc umstellen muss? Die signup.html ist zwar überhaupt nicht ins Wordpress eingebettet, doch irgendwie hatte ich das Gefühl, irgendeine Einstellung vereitelt es meinem AJAX Request, das php script anzusprechen. Liegen alle auf dem selben Server/selbe URL...

    Folgendes hab ich probiert bisher:



    Zitat

    $.post('http://meineurl.com/useAPI.php', {}, function(response) { alert('...ok');
    }).error(function() {alert('...');});


    Als URL im Ajax Aufruf hab ich schon alles versucht (ganzer URL Pfad, relativer Pfad, Pfad in anderem Verzeichnis etc). Und natürlich hab ich das alles auch mit GET Ajax Request probiert, hat auch nichts gebracht..


    Bitte, bitte um einen Tipp. Ich würd so gern wissen, was da schief läuft. Was übersehe ich denn da?

    Einmal editiert, zuletzt von sunnysunny187 (25. August 2013 um 19:55)

    • 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

  • Du möchtest innerhalb von WP eine Ajax-Anfrage zu einer Proxy-Seite durchführen, die "neben" WP liegt? formateins hat sicherlich wesentlich mehr Erfahrung als ich, doch ich würde erst einmal bei der Registrierung ansetzen.

    Code
    add_action("wp_ajax_my_action", "meine_ajax_funktion");

    Und das erste was ich mitbekam, bei WP sollte die aufrufende Funktion nicht mit $ beginnen, sondern mit jQuery, wie bei:

    Code
    jQuery(document).ready(function() {
        $.post(ajaxurl, data, function(response) {}
    }

    Bei mir hat das zumindest innerhalb von WP so geklappt, auf eine andere Datei habe ich bisher noch nicht getestet.

  • Das Dollarzeichen sollte man auch entsprechend deklarieren:

    Code
    ;(function($) {
      $(document).ready( function() {
        ...
      });
    })(jQuery);

    Das Semikolon zu beginn ist kein Tippfehler.

    PS: Wordpress selbst nutzt an unzähligen Stellen AJAX-Requests.

    PPS: Der Request selbst sollte natürlich auf einen Event erfolgen, bspw. .click() oder .submit() bei Forms.

  • Melewo: Alle Files liegen auf meinem Server (php, html, js etc).

    add_action die Codezeile verstehe ich leider nicht.

    [LEFT][COLOR=#000000][FONT=sans-serif]Hooks a function on to a specific [/FONT][/COLOR][/LEFT]action[LEFT][COLOR=#000000][FONT=sans-serif].
    [/FONT][/COLOR][/LEFT]
    Eigentlich will ich ja einen Ajax Request ausführen, der mein php aus irgendeinem Grund nicht findet. Brauche ich da add_action dazu? Kannst Du es noch ausführlicher erklären bitte :-)


    @formateins: Der Request folgt auf ein Event (Button click Event). Ich hatte oben nicht den ganzen Code gepostet, weil es nur um die Parameter des Ajax Requests ging.

    Ich habe alles gedebugged. Es passt fast alles (auch die $ jquery etc....) nur das php File kann er nicht laden über den Ajax request.


    Irgendeine Idee, woran der Ajax Request scheitert?

    Das ist ein simples html file und kann kein php aufrufen. Eigentlich schon heftig... hab mich heute schon sehr geärgert für so nen simplen Task stundenlang getüfftelt zu haben. Aus nem html js Ajax php aufrufen.... Ist denn das so schwer????? Ist WP so nen shit??? Mal ehrlich, sorry das ich mich aufrege, aber sowas lächerliches dass des so schwer sein muss... In JS hab ich sowas in einer Minute fertig, nein in WP muss man da stundenlang dran sitzen.... sorry reg mich grad bissl auf :-)

    Naja, vermutlich werde ich die Sache jetzt ohne php lösen nur mit JS wenn das so schwer ist und irgendwann sowieso nen eigenes plugin oder template schreiben für WP, was wir sowieso früher oder später brauchen um das html zu ersetzen und ne saubere Lösung zu haben.

  • Ich schrieb ja, dass ich nicht so sehr viel Erfahrung habe. Von Ajax eigentlich etwas mehr, jedoch nur mit JavaScript und nicht mit jQuery und im Zusammenspiel mit WP so gut wie gar nicht. Deshalb habe ich mir da erst in der letzten Woche ein "kurz & gut" Buch für jQuery zugelegt, eigentlich wollte ich nur JS richtig lernen und nicht unbedingt den Umgang mit einem Framework.

    Weil ich aber nun was mit WP und Ajax machen wollte, hatte ich mir einfach das erste Beispiel von dieser Seite angepasst und gleich was da noch aufgerufen werden soll, alle "greifbaren" Script-Dateien lassen sich ja in der Callback-Funktion laden.

    http://codex.wordpress.org/AJAX_in_Plugins

    Eigentlich solltest Du in der Callback-Funktion auch Deine Seiten laden können. Somit brauchst Du nicht zwei Dateien, eine für den Ajax-Request und eine Proxy-Seite für die Response, sondern die Proxy-Seite für die Response solltest Du gleich in der Callback-Funktion laden können, damit diese dann die Response an die Ajax-Request-Seite sendet. Somit sind es eigentlich zwei Seiten, die aber in einer Scriptseite notiert werden können.

    Was formateins schrieb, habe ich erst einmal nur im Hinterkopf gespeichert, denke, da werde ich mal zukünftig drauf achten.

  • Nicht ein System verantwortlich machen, wenn's an den eigenen Kapazitäten scheitert... ;)

    1. Was sagt Dir denn Dein Debug-Output?
    2. Was sagt der XHR-Response?
    3. Was sagt die Browser-Konsole?

    Wenn es nicht geladen wird, ist definitiv ein Status vorhanden... ;)

  • Jetzt mach mal halblang, meine Kapazitäten sind riiiiissig :-)

    ja, ne is klar.


    Also ok ich glaub ich hab jetzt nach 2 Stunden googlen eine halbwegs annehmbare Lösung gefunden...


    Mein Ansatz war ja folgender: Ein html mit javascript hernehmen und mittels javascript über ajax ein php script ausführen. Das geht nicht, hab ich jetzt noch 10000 mal versucht. Läuft nicht aus irgend einem Grund. Ich verstehe es (noch) nicht und werde morgen ein paar Kollegen fragen in der Arbeit.

    Aber danke Euch jedenfalls, habt mir super geholfen. Danke!

    Debugger sagt responseText "" empty und Status 0
    bzw. er findet das php einfach nicht oder kann es nicht laden, denn im Debug Fenster taucht die rote Meldung auf "[COLOR=#333333]"Beim Laden der Ressource ist ein Fehler aufgetreten"[/COLOR]" wie ich ganz oben schon geschrieben habe. Mit Resource wird hier die php referenziert, die auch rot ist in der developer console...


    Und jetzt zur Lösung:

    Scheinbar ist es in WP nicht möglich einfach so mal aus nem JS beliebig nen php aufrufen. DAs ist leider tatsächlich etwsa komplizierter (wie es scheint).

    Die beste Lösung mit dem besten Beispiel ist für mich hier: http://www.andrewmpeters.com/blog/how-to-ma…s-in-wordpress/

    Hier auch noch ein Tutorial (etwas eigenwillig aber schön): http://stackoverflow.com/questions/6659…ordpress-plugin


    Also scheinbar muss ich nun tatsächlich ein plugin schreiben und mit der admin-ajax.php arbeiten wie es in den Tuts steht...

    Dachte es ginge einfacher aber ok.


    Jedenfalls danke Euch für die Hilfe und wenn Ihr noch nen Hinweis habt immer her damit :-)

    Haut rein :-)

    Einmal editiert, zuletzt von sunnysunny187 (25. August 2013 um 23:19)

  • Plugin, Theme, einerlei. Kapazitäten sind begrenzt - bei mir funktioniert das ohne Probleme. Sowohl im Rahmen eines Themes als auch als eigenständiges Plugin. Ganz banal über .load()... ;)

    1. Eigenes JS hooked man in den Header/Footer.
    2. Wenn die Möglichkeit gegeben ist, bleibt man in der API von Wordpress.
    3. Man muss sich nicht der Klassen und Funktionen der API bedienen, das vereinfacht - je nach Anforderung - aber die eigenen Prozesse. Insbesondere, wenn es um die serialisierten Daten geht.
    4. Im Rahmen eines Themes belässt man sogar einfach die Funktion in der functions.php (sofern man kein Framework nutzt) und führt diese über den Request aus.

    08/15:

    Code
    function foe_add_js()
    {
    	$headerdata = '<script type="text/javascript" src="'.plugins_url("...").'"></script>';
    
    
    	echo $headerdata;
    }
    add_action('wp_head', 'foe_add_js');

Jetzt mitmachen!

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