Wordpress Ajax URL für Funktion in functions.php
3 Antworten
- Stimmen
-
- 2016-10-11
//ajax call var data = { action: 'folder_contents', path: datafolder }; var ajaxurl = baseurl + ''; //WHAT IS THIS?!?! jQuery.post(ajaxurl, data, function(response) { alert('Got this from the server: ' + response); console.log(response); });
Und dein PHPin functions.php
//Called by Ajax from App - list the contents of the folder so they can be downloaded and stored locally function folder_contents() { $folderPath = $_POST['path'] ; $files = array_diff(scandir($path), array('.', '..')); print_r($files); return $files; die(); } add_action('wp_ajax_folder_contents', 'folder_contents'); add_action('wp_ajax_nopriv_folder_contents', 'folder_contents');
Oben wird Ihre Funktion als Ajax-Aktion hinzugefügt. Anschließend rufen Sie den Funktionsnamenin Ihrem AJAX auf.
Siehe https://codex.wordpress.org/Plugin_API/Action_Reference/wp_ajax_ (Aktion)
//ajax call var data = { action: 'folder_contents', path: datafolder }; var ajaxurl = baseurl + ''; //WHAT IS THIS?!?! jQuery.post(ajaxurl, data, function(response) { alert('Got this from the server: ' + response); console.log(response); });
And your PHP in functions.php
//Called by Ajax from App - list the contents of the folder so they can be downloaded and stored locally function folder_contents() { $folderPath = $_POST['path'] ; $files = array_diff(scandir($path), array('.', '..')); print_r($files); return $files; die(); } add_action('wp_ajax_folder_contents', 'folder_contents'); add_action('wp_ajax_nopriv_folder_contents', 'folder_contents');
The above add your function as an ajax action. You then call the function name in your AJAX.
See https://codex.wordpress.org/Plugin_API/Action_Reference/wp_ajax_(action)
-
Entschuldigung,in Ihrem JSmüssen Sie auch das Ajaxurlfür Ihre Site hinzufügen.Ich definiere dies,indemiches definiere und das Skriptfür den Zugriff lokalisiere.Siehe: https://codex.wordpress.org/Function_Reference/wp_localize_scriptSorry, in your JS you also need to add the ajaxurl for your site. The way i do this is by defining it and localizing the script for access. See: https://codex.wordpress.org/Function_Reference/wp_localize_script
- 0
- 2016-10-11
- Steve
-
Hierfinden Sie auchein Beispielfür das Ajaxurl und dessen Lokalisierung.https://www.creare.co.uk/blog/wp/wp-localize-script-wordpressAlso see here for an example of the ajaxurl and localizing that. https://www.creare.co.uk/blog/wp/wp-localize-script-wordpress
- 0
- 2016-10-11
- Steve
-
OK,ich kämpfe darum,dass dasfunktioniert.Ich habemeine ursprüngliche Abfrage obenbearbeitet,um zu zeigen,wasichbasierend auf Ihrer Antwort versucht habeOK, Im struggling to get this working. I have edited my original query above to show what I have tried based on your answer
- 0
- 2016-10-11
- LeeTee
-
Führen Sie anstelle von "$files zurückgeben" "echo $files" aus.Instead of "return $files", do "echo $files".
- 0
- 2016-10-11
- Steve
-
ODERmachen Sie wp_send_json ($files);https://codex.wordpress.org/Function_Reference/wp_send_jsonOR, do wp_send_json($files); https://codex.wordpress.org/Function_Reference/wp_send_json
- 0
- 2016-10-11
- Steve
-
Ok,ich habe zu wp_send_json ($files)geändert.undbekommetrotzdem leider 0Ok I have changed to wp_send_json($files); and still get 0 unfortunately
- 0
- 2016-10-11
- LeeTee
-
Versuchen Sie: `functionfolder_contents () { Echo 'Hallo'; sterben(); } ` Sehen Sie das Wort Halloin der console.log?Try: `function folder_contents() { echo 'hello'; die(); }` Do you see the word hello come out in the console.log?
- 0
- 2016-10-11
- Steve
-
Ich habe das versucht und 0bekommen,versucht,alles aus dieser Funktion zuentfernen undtrotzdem 0. Wennich direkt zur Dateimit http://myweb.co.uk/wp-admin/admin-ajax.php?action=folder_contents Igehebekommeimmernoch 0.Ive tried that and get 0, tred removing everything from that function and still get 0. If I go directly to the file with http://myweb.co.uk/wp-admin/admin-ajax.php?action=folder_contents I still get 0.
- 0
- 2016-10-11
- LeeTee
-
danke übrigensfür deine hilfe,es wird sehrgeschätzt :)thansk for your help by the way, it is much appreciated :)
- 0
- 2016-10-11
- LeeTee
-
Lassen Sie uns [diese Diskussionim Chatfortsetzen] (http://chat.stackexchange.com/rooms/46636/discussion-between-steve-north-and-leetee).Let us [continue this discussion in chat](http://chat.stackexchange.com/rooms/46636/discussion-between-steve-north-and-leetee).
- 0
- 2016-10-11
- Steve
-
- 2016-10-11
In Ihrem Code sehen Sie,dass Sie das Skript 'ajax-js' lokalisieren,aberbefindet sich das Skript selbstin der Warteschlange?Ichmusste voreinigen Wochen wp_localize-Skripte verwenden undmein JS-Skriptin die Funktion wp_localize scripteinreihen.Zum Beispiel:
add_action( 'wp_enqueue_scripts', 'google_js_script' ); function google_js_script() { // Enqueue the js script wp_enqueue_script('google-js', GOOGLE_PLG_URL . 'assets/js/google-places.js', array('jquery'), true); // Localize the enqueued JS script wp_localize_script( 'google-js', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'place' => '' ) ); }
Ich hoffe,dies hilftbeim Debuggen des Problems.
In your code I see you localize the 'ajax-js' script, but is the script itself enqueued? I had to use wp_localize scripts a few weeks ago and I had to enqueue my JS script inside the function that called wp_localize script. For example:
add_action( 'wp_enqueue_scripts', 'google_js_script' ); function google_js_script() { // Enqueue the js script wp_enqueue_script('google-js', GOOGLE_PLG_URL . 'assets/js/google-places.js', array('jquery'), true); // Localize the enqueued JS script wp_localize_script( 'google-js', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'place' => '' ) ); }
Hope this helps to debug the issue.
-
Das JS wird auf der Site selbstnicht verwendet.Er verwendet den JSin einer Desktop-Anwendung.The JS is not used on the site itself. He is using the JS inside a desktop application.
- 0
- 2016-10-12
- Steve
-
- 2016-10-11
Der WP-Codex besagt,dass Sie dieglobale Variable
ajaxurl
verwenden könnenohnees zuerst zu deklarieren.Mit anderen Worten,kommentieren Sie diese Zeile aus:var ajaxurl = ajax_params.ajax_url;
... und sehen Sie,ob dasfunktioniert.
The WP Codex states that you can use the global variable
ajaxurl
without declaring it first. In other words, comment out this line:var ajaxurl = ajax_params.ajax_url;
...and see if that works.
Ich habeeine Desktop-App und verwende $ .getJSON ,ummithilfe des Plugins WP REST API Daten vonmeiner WordPress-Site abzurufen. Diesfunktioniertgut undichgehe davon aus,dassich aucheine Funktionin der Dateifunctions.php? Ajax aufrufen kann. Wiemacheich das? Keines der Beispiele,dieichgesehen habe,liefert die AjaxURL. Wiefindeich heraus,was dasist?
Ich habe denfolgenden Code:
Functions.php (in der WordPress-Site auf dem Server)
app.js (lokalmit dem Knoten-Webkit vom Computer aus ausführen)
------------------- BEARBEITEN ----------------------
Nach der Antwort unten habeich denfolgenden Codebasierend auf den Ratschlägen ausprobiert,aberichbekomme
Functions.php
App.js
Wennich die Funktion add_ajax_script () entferne undeinfach diefolgende verwende,wird 0 zurückgegeben.
Bitte helfen Sie ...