ajaxurl не определен во внешнем интерфейсе
-
-
Проверьте это руководство.Это может вам помочь.http://www.1stwebdesigner.com/implement-ajax-wordpress-themes/Check this tutorial. It may help you. http://www.1stwebdesigner.com/implement-ajax-wordpress-themes/
- 0
- 2015-06-03
- Nilambar Sharma
-
3 ответ
- голосов
-
- 2015-06-03
В бэкэнде есть глобальная переменная
ajaxurl
,определяемая самим WordPress.Эта переменная не создается WP во внешнем интерфейсе. Это означает,что если вы хотите использовать вызовы AJAX во внешнем интерфейсе,вы должны сами определить такую переменную.
Хороший способ сделать это - использовать
wp_localize_script
.Предположим,что ваши вызовы AJAX находятся в файле
my-ajax-script.js
,а затем добавьте wp_localize_script для этого файла JS следующим образом:function my_enqueue() { wp_enqueue_script( 'ajax-script', get_template_directory_uri() . '/js/my-ajax-script.js', array('jquery') ); wp_localize_script( 'ajax-script', 'my_ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) ); } add_action( 'wp_enqueue_scripts', 'my_enqueue' );
После локализации JS-файла вы можете использовать объект
my_ajax_object
в своем JS-файле:jQuery.ajax( { type: "post", dataType: "json", url: my_ajax_object.ajax_url, data: formData, success: function(msg){ console.log(msg); } });
In backend there is global
ajaxurl
variable defined by WordPress itself.This variable is not created by WP in frontend. It means that if you want to use AJAX calls in frontend, then you have to define such variable by yourself.
Good way to do this is to use
wp_localize_script
.Let's assume your AJAX calls are in
my-ajax-script.js
file, then add wp_localize_script for this JS file like so:function my_enqueue() { wp_enqueue_script( 'ajax-script', get_template_directory_uri() . '/js/my-ajax-script.js', array('jquery') ); wp_localize_script( 'ajax-script', 'my_ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) ); } add_action( 'wp_enqueue_scripts', 'my_enqueue' );
After localizing your JS file, you can use
my_ajax_object
object in your JS file:jQuery.ajax( { type: "post", dataType: "json", url: my_ajax_object.ajax_url, data: formData, success: function(msg){ console.log(msg); } });
-
Могу ли я использовать wp_localize_script без необходимости использовать wp_enqueue_scritp?can I use `wp_localize_script` without having to use `wp_enqueue_scritp`?
- 2
- 2015-06-03
- dread_cat_pirate
-
Вы используете дескриптор скрипта в wp_localize_script,поэтому вы должны использовать wp_enqueue_script по крайней мере для одного из ваших скриптов.Но ... Не использовать wp_enqueue_script - не лучшая идея (вы рискуете некоторыми конфликтами и проблемами с зависимостями).You use script handle in wp_localize_script, so you have to use wp_enqueue_script for at least one of your scripts. But... Not using wp_enqueue_script is not a good idea (you risk some conflicts and dependencies problems).
- 1
- 2015-06-05
- Krzysiek Dróżdż
-
У меня нет внешнего скрипта для загрузки,я просто хочу использовать ajaxurl для вызова ajax.это невозможно?i don't have any external script to load, i just want to use ajaxurl to make an ajax call. is that not possible?
- 0
- 2015-09-23
- R T
-
А куда вы поместите этот вызов AJAX?Как встроенный скрипт?Это очень плохая идея ...And where will you put this AJAX call? As inline script? It's a very bad idea...
- 0
- 2015-09-23
- Krzysiek Dróżdż
-
У меня есть отдельная форма,в которой я управляю проверкой и отправкой,вызов ajax для отправки формы,конечно,с помощью wordpress,добавив крючок.в любом случае я выяснил,как использовать ajaxurl.i've a separate form, in that i'm managing validation and on submit, an ajax call to submit form with of course wordpress way by adding hook. anyway I've figured out the way for using ajaxurl.
- 0
- 2015-09-23
- R T
-
Потрясающе ... Я использую его в своем Javascript в интерфейсе и работает как шарм :)Awesome... I'm using it in my Javascript on front end and works like a charm :)
- 0
- 2017-10-17
- Omer
-
- 2015-09-23
чтобы напрямую использовать ajaxurl,добавьте в файл плагина следующее:
add_action('wp_head', 'myplugin_ajaxurl'); function myplugin_ajaxurl() { echo '<script type="text/javascript"> var ajaxurl = "' . admin_url('admin-ajax.php') . '"; </script>'; }
затем вы можете использовать
ajaxurl
для запроса ajax.to use ajaxurl directly, in your plugin file add this:
add_action('wp_head', 'myplugin_ajaxurl'); function myplugin_ajaxurl() { echo '<script type="text/javascript"> var ajaxurl = "' . admin_url('admin-ajax.php') . '"; </script>'; }
you can then use the
ajaxurl
for ajax request.-
Этот ответ делает ajaxurl таким же,как и использование по умолчанию.Что намного лучше принятого ответа.This answer makes `ajaxurl` similarly the same as the default usage. Which is much better than the accepted answer.
- 2
- 2018-12-25
- Abel Melquiades Callejo
-
правда,но бесполезно,если вы используете его в файле .js.true, but it's useless if you are using it in a .js file.
- 0
- 2019-03-20
- Jules
-
@Jules `ajaxurl` все еще доступен в файле` * .js`.Для этого вам может потребоваться объявить переменную `ajaxurl` на ранней стадии загрузки страницы.Еще одна вещь,которую следует учитывать,- это вызов вашего внешнего файла `* .js`.Внешний файл должен называться ** ПОСЛЕ ** создания экземпляра ajaxurl,и ему следует указать правильное значение URL.@Jules `ajaxurl` is still available in a `*.js` file. To do so, you may need to declare the `ajaxurl` variable early on of the page load. Another thing to consider is the calling of the external `*.js` file of yours. The external file should be called **AFTER** the `ajaxurl` has been instantiated and be given the right URL value.
- 1
- 2019-11-09
- Abel Melquiades Callejo
-
что за ошибка в консоли?what's an error in console?
- 0
- 2020-01-29
- Dharmishtha Patel
-
- 2020-01-28
Я использую приведенный ниже код на сайте wordpress.
мы можем использовать приведенный ниже код для настройки ajaxurl следующим образом.<?php echo esc_url(admin_url('admin-ajax.php')); ?>
Я также добавил пример ajax,где мы можем использовать строку выше.
function setNotificationRead() { fetch('<?php echo esc_url(admin_url('admin-ajax.php')); ?>', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8' }, body: `action=yourFunctionsAction`, credentials: 'same-origin' }).then(response => { return response.json(); }).then(data => { if (data.status === 'true') { console.log('Do something...'); } }); }
i have use below code in wordpress site.
we can use below code for setup ajaxurl like this.<?php echo esc_url(admin_url('admin-ajax.php')); ?>
i have also added ajax example were we can use above line.
function setNotificationRead() { fetch('<?php echo esc_url(admin_url('admin-ajax.php')); ?>', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8' }, body: `action=yourFunctionsAction`, credentials: 'same-origin' }).then(response => { return response.json(); }).then(data => { if (data.status === 'true') { console.log('Do something...'); } }); }
Я пытаюсь создать ajaxform на лицевой стороне.Я использую код
,для которого я получаю сообщение об ошибке
При использовании аналогичного кода на админке работает бэкэнд.Какой URL я должен использовать для обработки запроса ajax?