Laden Sie die .php-Datei mit ajax in div

In einer Plugin-Datei, die eine Seitenvorlage darstellt, schließe ich eine PHP-Datei ein, die einige Inhalte auf der Seite generiert.

Ein vereinfachtes Beispiel:

Ich möchte, dass dieses div “aktualisiert” wird, wenn auf ein bestimmtes Element auf der Seite geklickt wird. In einer Nicht-Wordpress-Umgebung könnte ich einfach .load () verwenden, um die .php-Datei vom Server zu holen und sie wie folgt in das div zu schreiben:

 $('#content').load('path-to-file.php'); 

Aber in WordPress können Sie nicht direkt auf Dateien zugreifen, es wird ein 404-Fehler ausgetriggers.

Die offizielle Methode, Sachen vom Server über Ajax zu packen, besteht darin, WordPresss admin-ajax.php mit einem Aktionssatz wie folgt zu durchlaufen:

PHP:

 add_action('wp_ajax_tps_refresh_cart_display', 'tps_refresh_cart_display'); add_action('wp_ajax_nopriv_tps_refresh_cart_display', 'tps_refresh_cart_display'); function tps_refresh_cart_display() { // Grab php file from server $result['phpfile'] = 'path-to-file.php'; $result = json_encode($result); echo $result; die(); } 

JS:

 $.ajax({ type : 'post', dataType : 'json', url : myAjax.ajaxurl, //we can use this value because in our php file we used wp_localize_script context:this, data : {action: 'tps_refresh_cart_display', }, success: function(response) { //load the fetched php file into the div $('#content').load(response.phpfile); } }); 

Aber ich kämpfe, um herauszufinden, wie man die PHP-Datei ergreift und WordPress tatsächlich dazu bringt, dass ich es in das div laden kann. Wenn Sie die Datei auf diese Weise holen und nach dem AJAX-Aufruf .load () verwenden, wird immer noch eine 404 geworfen. Gibt es eine Möglichkeit, eine PHP-Datei zu lokalisieren, wie es wp_localize_script für js-Skripte tut?

Mache ich immer noch falsch? Jede Hilfe wird geschätzt.

Solutions Collecting From Web of "Laden Sie die .php-Datei mit ajax in div"

Das Laden einer PHP-Datei auf die Art, wie Sie es versuchen, ist immer noch ein direkter Zugriff auf die Datei. Sie sollten die Datei während der Verarbeitung der Ajax-Anfrage auf der Serverseite ausführen und das Ergebnis zurück an den Browser senden. Dann fügen Sie das Ergebnis in das div .

Dein Code sollte etwas wie sein

 add_action('wp_ajax_tps_refresh_cart_display', 'tps_refresh_cart_display'); add_action('wp_ajax_nopriv_tps_refresh_cart_display', 'tps_refresh_cart_display'); function tps_refresh_cart_display() { // Grab php file output from server ob_start(); include('path-to-file.php'); $result['content'] = ob_get_contents(); $result = json_encode($result); // use wp_send_json instead to make this shorter echo $result; die(); } 

und dann auf der JS sollten Sie etwas wie tun

 success: function(response) { //load the fetched "result" of the php file into the div $('#content').insert(response.content); }