Intereting Posts
Страница WordPress не загружает выбранный шаблон Меню – открыть элементы в новой вкладке / окне? Pagination 404 ошибки для ответов на сообщения автора на author.php Тема WordPress для детей Как создать и ссылку на страницу администрирования для плагина? FlexSlider не будет работать с jQuery WordPress | зависимости Публикация сообщения при редактировании формы сообщения с нажатием клавиши ввода / возврата на клавиатуре Первое вырезание буквы в выдержке Изменение параметров WP_LIST_AUTHOR для вывода всех пользователей в сетке (и Paginate) Как отладить пустую страницу? Удалите оригинальное изображение большого размера после загрузки и оставьте только 3 изображения, смятых медиа-галереей Как добавление пользовательской мета в форму регистрации? Экспортировать пользователей с Live Site для импорта на стадию Используйте plupload для загрузки изображений и сохранения их в пользовательскую папку и таблицу базы данных Вход через псевдоним

Вызов AJAX возвращает 0

Несмотря на многие аналогичные должности, все предлагаемые решения не сработали для меня, так что мы здесь.

У меня есть следующий скрипт:

jQuery('#term').keyup(ajaxChange); function ajaxChange(){ var newFormChange = jQuery("#term").val(); alert (newFormChange); jQuery.ajax({ type:"POST", action: "my_test_action", url: "/wp-admin/admin-ajax.php", data: newFormChange, success:function(data){ console.log(data); } }); return false; } 

И PHP выглядит так:

 function my_test_action() { $var = "this is a test"; wp_send_json($var); die(); } add_action( 'wp_ajax_my_test_action', 'my_test_action' ); add_action( 'wp_ajax_nopriv_my_test_action', 'my_test_action' ); 

Я также пробовал: echo json_encode($var) или echo $var вместо wp_send_json() но функция всегда возвращает 0 в консоли браузера!

Мои другие вызовы AJAX работают, например, у меня есть еще один, который вызывает скрипт PHP, который вызывает запрос WP и отображает некоторые сообщения, он отлично работает.

EDIT: Вот как мой скрипт включен:

  function add_js() { if (is_page_template()) { wp_enqueue_script( 'mycustomscript', get_stylesheet_directory_uri().'/js/mycustomscript.js', array('jquery'), '1.0', true ); wp_localize_script('mycustomscript', 'ajaxurl', admin_url( 'admin-ajax.php' ) ); } } add_action('wp_enqueue_scripts', 'add_js'); 

Я думаю, проблема связана с переменной newFormChange , потому что jQuery(this).serialize(); не работало в первую очередь, потому что форма не отправляется, но изменяется только одно из ее полей. Поэтому я заменил его на var newFormChange = jQuery("#term").val(); но может url: "/wp-admin/admin-ajax.php" проблема с url: "/wp-admin/admin-ajax.php"

Где я ошибаюсь? благодаря

Solutions Collecting From Web of "Вызов AJAX возвращает 0"

Обратите внимание, что action должно быть внутри ключа data . В вашем почтовом запросе нет ключа, называемого как action поэтому функция обратного вызова никогда не вызывается.

Рассмотрим этот пример: –

 jQuery.ajax({ type:"POST", url: "/wp-admin/admin-ajax.php", data: { action: "my_test_action", form_data : newFormChange }, success: function (data) { console.log(data); } }); 

Также Примечание. Никогда не используйте относительный URL-адрес Ajax, например /wp-admin/admin-ajax.php . Вы можете использовать wp_localize_script() . См. Эти примеры

Кажется, есть проблема с url: "/wp-admin/admin-ajax.php" , вместо этого попробуйте добавить полный путь:

 function addajaxurl() { wp_localize_script( 'frontend-ajax', 'frontendajax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ))); } add_action( 'wp_enqueue_scripts', 'addajaxurl' ); 

и вызовите переменную в вашей функции ajax:

  jQuery.ajax({ type:"POST", url: ajaxurl, data: newFormChange, success:function(data){ console.log(data); } }); 

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

 var newFormChange = jQuery("#term").val(); jQuery.ajax({ type: "POST", url: "/wp-admin/admin-ajax.php", data: { action: "my_test_action", newFormChange: newFormChange } , success: function(data) { console.log(data); alert(data); }); 

Вы также должны удалить die (); от вашей php-функции. Он уже находится в wp_send_json.