Intereting Posts
Как сохранить и показать внешнюю медиасвязь автоматически в WordPress? Администратор сайта в сети не может редактировать пользователей? Проверяет ли необходимость в блоге? Любые документы для аргумента wp_nav_menu "items_wrap"? пользовательский html при изменении страницы в браузере Крошечный MCE не добавляет тэг при сохранении темы темы Являются ли идентификаторы страниц / сообщений уникальными для всей сети? W3 Total Cache Minify + cforms II = POST /wp-content/plugins/cforms/lib_ajax.php 500 (Внутренняя ошибка сервера) Многоузловая конфигурация для нескольких доменов Обновление пользовательской темы, созданной с нуля Показывать пользовательскую таксономию внутри пользовательского меню Как удалить виджет из боковой панели на определенной странице? Шаблон регистрации страницы из плагина Укладка «активной» ссылки за пределами меню WordPress по умолчанию Пользовательские стили CSS-администратора для стилирования медиа-загрузчика?

Функции функции Ajax call from front

Вот что я пытаюсь сделать: вызов функции в моей теме functions.php с фронта моей темы.

Итак, на фронте:

$(document).on('click','.btn-vote',function(e){ e.preventDefault(); var $that = jQuery(this); var id = $that.attr('data-id'); var data = { 'action': 'voteIncrementer', 'id': id }; jQuery.post(ajaxurl, data,function(response){ // ajaxurl is defined in footer.php > var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>'; console.log(response); $that.find('.vote-count').html(response); }); }); 

И связанная функция в functions.php:

 add_action("wp_ajax_voteIncrement", "voteIncrement"); add_action("wp_ajax_nopriv_voteIncrement", "voteIncrement"); function voteIncrement(){ echo 'hello'; die(); } 

Выйти просто так? Но дело в следующем: в моем JS журнал возвращает 0 (это означает, что wp-ajax не может найти мою функцию).

Что мне не хватает?

Solutions Collecting From Web of "Функции функции Ajax call from front"

Я думаю, что ваша проблема в ajaxurl недоступна для вашего скрипта. Попробуйте определить, что varibale перед загрузкой js-кода. Лучший способ – использовать wp_localize_script:

PHP:

 add_action( 'wp_enqueue_scripts', 'cyb_enqueue_scripts' ); function cyb_enqueue_scripts() { //Change the key and url with yours wp_register_script('my-js', get_stylesheet_directory_uri(). '/js/my-js.js', array( 'jquery' ) ); wp_enqueue_script('my-js'); //Localize script data to be used in my-js.js $scriptData = array(); $scriptData['ajaxurl'] = admin_url( 'admin-ajax.php' ); $scriptData['action'] = 'voteIncrement'; wp_localize_script( 'my-js', 'my_js_data', $scriptData ); } add_action("wp_ajax_voteIncrement", "voteIncrement"); add_action("wp_ajax_nopriv_voteIncrement", "voteIncrement"); function voteIncrement(){ echo 'hello'; die(); } 

Js:

 (function($){ $(document).ready(function(){ $('.btn-vote').on('click',function(e){ e.preventDefault(); var $that = jQuery(this); var id = $that.attr('data-id'); var data = { 'action': my_js_data.action, 'id': id }; jQuery.post( my_js_data.ajaxurl, data, function(response) { console.log(response); $that.find('.vote-count').html(response); }); }); }); })(jQuery); 

Кроме того, я бы изменил метод post в запросе ajax для get. Это быстрее, чем сообщение, и ваше дело, похоже, не требует почтового запроса.