Intereting Posts
Экспорт SQL-запроса на основе типа сообщения Инициализировать среду WordPress для использования в реальном скрипте cron Расширенные пользовательские поля – эффективность запросов Загрузите изображение с фронтальной стороны с помощью кнопки WordPress add media Как получить URL-адрес gravatar Каков наилучший способ предотвратить доступ к пользовательским типам сообщений, если они не аутентифицированы, когда тип сообщения имеет архив и является общедоступным? Лучшие практики для создания сайта WordPress «подвижный»? Как сделать страницы тегов выглядеть как / tags /% tagname% / в URL? Рекомендуемый размер носителя для двадцати четырнадцати Изменение даты публикации в мета-окне Удалите пробелы перед the_excerpt (); Как определить таблицу поиска, которая будет работать во всех элементах PHP шаблона? Я хотел бы переместить панель Widgets в нижнюю часть списка в Customizer Где мой плагин POST? Фильтровать медиа-библиотеку по автору или post_parent

проблема с 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'); } });