Intereting Posts
изменить wordpress URL-адрес логотипа сайта Постоянная ссылка сервера xammp по почтовому имени не работает Как передать параметр url в поисковом запросе Как добавить мои правила перезаписи в начале, перенаправить на нужную страницу и сбросить правила активации плагина? Правило перезаписи для переименования wp-admin для wordpress multisites Есть ли блок-схема последовательности загрузки WordPress? Относительный путь WordPress Синхронизировать комментарии между двумя установками WP WordPress 3.5 Media Manager – добавьте кнопку Я продолжаю выходить в Firefox Как я могу добавить «Использовать как признанное изображение» в пользовательский метабокс? Фильтрация нескольких настраиваемых полей с помощью WP REST API 2 Тема WordPress не обновляется в других браузерах Как ограничить конкретный контент определенным пользователем Список пользовательских типов сообщений в метабоке

Передайте атрибуты формы другому шаблону php в wordpress

Я знаю, что этот вопрос задают много раз, но я все испробовал и до сих пор не понял, почему он не работает …

Поэтому у меня есть следующая форма (еще не окончательная):

<form id="doctor_search" > <h1>Doctor search</h1> <fieldset> <legend>Fill at least 1 of the following fields</legend> <label for="name" name="fn">First name:</label> <input type="text" id="name" name="first_name"> <label for="name">Last name:</label> <input type="text" id="lname" name="last_name"> <label>Gender:</label> <input type="radio" id="fem" value="fem" name="doc_gen"><label for="fem" class="light">Female</label><br> <input type="radio" id="male" value="male" name="doc_gen"><label for="male" class="light">Male</label> </fieldset> <fieldset> <label for="job">Specialization:</label> <select id="job" name="user_job"> <option value="frontend_developer">Pediatry</option> <option value="php_developor">General medicine</option> <option value="python_developer">Cardiology</option> <option value="rails_developer"> Geniology</option> <option value="web_designer">Endocrinology</option> </select> <label>Interests:</label> <input type="checkbox" id="development" value="interest_development" name="user_interest"><label class="light" for="development">...</label><br> <input type="checkbox" id="design" value="interest_design" name="user_interest"><label class="light" for="design">...</label><br> <input type="checkbox" id="business" value="interest_business" name="user_interest"><label class="light" for="business">...</label> </fieldset> <button type="submit" id="search-submit">Sign Up</button> </form> 

Я следую следующему руководству: https://www.youtube.com/watch?v=f7ID_L91lIk&t=245s, но он действительно не работает так, как предполагалось.

У меня есть следующий прослушиватель событий кнопки:

 userSubmitButton.addEventListener( 'click', function(event) { event.preventDefault(); var gen; if(document.getElementById('fem').checked) gen = true; else if(document.getElementById('male').checked) gen = false; else gen = null; var formData = { 'gender' : gen }; adminAjaxRequest( formData, 'doctor_search_process' ); } ); 

На данный момент я использую только один атрибут – пол. Мой запрос ajax следующий:

 var adminAjaxRequest = function( formData, action ) { $.ajax({ type: 'POST', dataType: 'json', url: SliderData.adminAjax, data: { action: action, data: formData //submission: document.getElementById( 'xyq').value, //security: screenReaderText.security }, success: function(response) { if ( true === response.success ) { alert( 'this was a success' ); } else { alert( 'You Suck' ); } } }); }; 

sliderData.adminAjax – это, в основном, url для admin-ajax.php. Отсюда я добавляю действие в functions.php

 function doctor_search_process() { $g = $_POST[ 'data' ][ 'gender' ]; } add_action( 'wp_ajax_doctor_search_process', 'doctor_search_process' ); add_action( 'wp_ajax_nopriv_doctor_search_process', 'doctor_search_process'); 

Проблема в том, что процесс ajax всегда терпит неудачу … И, кроме того, мне нужно перечислить сообщения с тегами, у которых есть женщина или мужчина. Насколько я понимаю, это можно сделать только в файле php страницы / шаблона. Даже если это сработало, я не знаю, как передать его на страницу php … Может кто-нибудь мне помочь? Почему мой аякс всегда терпит неудачу? Моя веб-страница: http://medclinic.x10host.com/sample-page/

Похоже, вы прочитали WP Codex, так что вы в основном решили все правильно. Несколько мелочей, которые я хотел бы предложить:

Убедитесь, что URL var правильный

Вы используете sliderData.adminAjax чтобы указать URL-адрес AJAX. Я всегда мог просто использовать ajaxurl потому что WP определяет его для меня. Я бы сделал переключатель, чтобы убедиться, что вы попали в нужную цель. (Всегда возможно, чтобы ваш объект sliderData не был в области видимости, или переменная-член не была правильно настроена.)

Исправить файл PHP

В функции doctor_search_process() вы пытаетесь получить доступ к переменной POST, как если бы это был двумерный массив. Я никогда не видел примера, который подсказывает это. Мне всегда приходилось напрямую обращаться к POST var. Я думаю, вы должны попробовать:

$g = $_POST[ 'gender' ];

Но тогда вы должны повторить это.

 function doctor_search_process() { $g = $_POST[ 'gender' ]; echo $g; wp_die(); } 

Я прочитал на этом форуме, что если файл PHP не «die ()», то AJAX не завершит процесс.

Улучшить javascript

Мне очень нравится, как вы передаете действие AJAX в функцию javascript, которая запускает AJAX. Однако, похоже, вы не правильно завершаете вызов AJAX. В вашей функции success вы ловите как успех, так и неудачу. Как правило, отказ ложится своей собственной функцией. Кроме того, функция успеха всегда на первом месте, поэтому она не должна быть явной. Это то, что работает для меня:

 $.post( data: { action: action, data: formData }, function( content ) { alert( content ); } ).fail( function( ) { alert( "you suck" ); });