Intereting Posts
Отображать сообщение, если сообщения не существуют в цикле Я не могу получить параметры запроса (параметры $ _GET) с помощью get_query_var Существует ли update_comment_meta hook? Предоставление редактора для пользовательских параметров темы WP_Query по названию категории Может ли Shortcode получить HTML / текст из контента и вернуть его дважды с добавлением HTML? pre_get_posts – попытка получить свойство предупреждения без объекта Распаковка двух столбцов для панели инструментов WordPress Дублирование / клонирование нескольких полей формы Как отображать посттипы и таксономии в стандартных сообщениях, а не на отдельной этикетке? Создайте новую созданную пользовательскую категорию (get_term_by и переменные) (вне Loop) Способ кэширования запроса в течение 24 часов Создание формы онлайн-анкеты – путем импорта вопросов из электронной таблицы? Как получить сообщения, опубликованные между датой и сегодня? Шорткод интерпретируется как текст

проблема с WordPress ajax

Я использую ajax в wordpress. Вот мой код ajax:

var name = "Toto"; $.ajax({ url : ajaxurl, type : 'post', data : { 'action' : 'test_action', 'data' : { 'name' : name, } }, success : function(response){ alert(response); }, error : function(){ alert('error'); } }); 

Мой PHP-код

 add_action("wp_ajax_test_action", "_test_function"); function _test_function(){ wp_localize_script( 'edit-taxonomy' , 'ajax_object' , array('ajaxurl' => admin_url('admin-ajax.php'))); die('success'); } 

затем я осмотрел его в браузере, и я понял:

введите описание изображения здесь

Я получаю предупреждение со значением «0» (как и в случае успеха). Тогда я понимаю, что он не вызывает функцию _test_function (он должен возвращать «успех»). Я думаю, что это проблема портов, потому что с другим подобным кодом значение порта равно 80, и он работает, но я не понимаю, почему он использует другой порт и как его исправить.

Solutions Collecting From Web of "проблема с WordPress ajax"

В общем случае, когда ajax-вызов usgin admin-ajax.php возвращает ноль, это означает, что действие не задано в данных запроса или что обратный вызов действия не найден.

В вашем случае, похоже, что обратный вызов действия не найден.

При выполнении вызова ajax во wp_ajax_nopriv_{action} интерфейсе вам нужно использовать действие wp_ajax_nopriv_{action} вместо wp_ajax_{action} :

 // For admin side add_action("wp_ajax_test_action", "_test_function"); // For frontend side add_action("wp_ajax_nopriv_test_action", "_test_function"); function _test_function(){ die( 'success' ); } 

Кроме того, локализация скрипта в wp_enqueue_scripts ajax-действия не имеет большого смысла, вам нужно сделать это где-то еще, обычно в действии wp_enqueue_scripts :

 add_action( 'wp_enqueue_scripts', 'cyb_enqueue_scripts' ); function cyb_enqueue_scripts() { // First, enqueue you ajax script wp_enqueue_script( 'my-script', plugins_url( 'assets/js/mi-ajax-script.js', __FILE__ ) ); // Second localize the script to pass variables wp_localize_script( 'my-script' , // handle of the script to be localized 'ajax_object' , array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) ); } 

Затем в my-ajax-script.js вы можете получить доступ к ajax_object созданному с помощью wp_localize_script() :

 var name = "Toto"; $.ajax({ url : ajax_object.ajaxurl, type : 'post', data : { 'action' : 'test_action', 'data' : { 'name' : name, } }, success : function(response){ alert(response); }, error : function(){ alert('error'); } });