Передача массива jquery Ajax php в теме WordPress

У меня есть ситуация, когда я хочу, чтобы одно поле выбора менялось в зависимости от выбранного параметра в другом поле выбора.

html может пойти:

<select name="gender-select" id="gender-select">
    <option value="girls">girls</option>
    <option value="boys">boys</option>
</select>

<select name="names" id="names">
    <option value="">Marie</option>
    <option value="">Rachael</option>
    <option value="">Lis</option>
</select>

Таким образом, все имена будут храниться в базе данных SQL. Предположим, что всего хранится 10 имен.

Затем, когда выбрана опция «мальчики», база данных должна найти все имена мальчиков в базе данных и передать их как варианты.

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

Я делаю это в wordpress, и процесс, о котором я думаю, будет выглядеть так (я уверен, что должен быть лучший способ - если нет, как это сделать?):

  1. php в шаблоне будет создавать массив с помощью пользовательского цикла.
  2. javascript возьмет этот массив с параметром «мальчики», а при изменении выбора передаст массив и параметр в functions.php
  3. Затем functions.php сделает свое дело, найдет имена всех мальчиков, а затем отправит их обратно в javascript,
  4. js отобразит новые параметры

Мне это кажется глупым преобразованием php -> js -> php -> js

просто для асинхронной сортировки массива.

Что мне здесь не хватает?


person Malibur    schedule 20.11.2013    source источник
comment
Почему бы не отобразить оба варианта выбора имени, упорядоченные по полу, а затем показать/скрыть соответствующий выбор при изменении? Это устранит необходимость каждый раз запрашивать сервер.   -  person maiorano84    schedule 20.11.2013
comment
потому что их будет гораздо больше, чем 2. Вероятно, около 50 вариантов в обоих случаях - очевидно, мой случай не связан с полом / именами - это был просто пример проблемы.   -  person Malibur    schedule 20.11.2013
comment
Я думаю, что тогда это зависит не только от размера таблицы базы данных, которую вы запрашиваете, но и от типа использования, который вы обычно ожидаете от пользователя. Запрос к базе данных через AJAX при каждом изменении является жизнеспособным вариантом, но может быть дорогим в зависимости от использования. С меньшими таблицами и ограниченными параметрами вы можете реализовать функцию отображения/скрытия, о которой я упоминал. С большими таблицами вы можете кэшировать результат каждого запроса в локальную переменную Javascript, чтобы повторные запросы не выполнялись сервером.   -  person maiorano84    schedule 20.11.2013
comment
Последний вариант, хотя, возможно, и более сложный, заключается в запросе всей таблицы и анализе результатов таким образом, чтобы событие изменения просто ссылалось на локальный объект для получения предварительно обработанных данных, тем самым устраняя необходимость в AJAX в первую очередь. . Но это может быть излишним в зависимости от того, как пользователи на самом деле используют вашу форму.   -  person maiorano84    schedule 20.11.2013


Ответы (1)


Лично я делаю так в каждом процессе AJAX в wordpress:

http://wp.smashingmagazine.com/2011/10/18/how-to-use-ajax-in-wordpress/

это очень хорошо объяснено и представляет очень безопасный способ использования AJAX в WP.

person Adil Ouchraa    schedule 20.11.2013
comment
уже посмотрел на это, но не совсем понял, как работать с большими массивами. - person Malibur; 20.11.2013