Javascript не показывает желаемые значения

Я пытаюсь управлять формами гравитации с помощью настраиваемых полей, чтобы показать магазины (вместе с назначением электронной почты скрытому полю) в моей форме на основе состояния с использованием JSON и JavaScript. Тот же код работает для другого веб-сайта, но не дает никакого результата когда я выбираю состояние в форме. Пожалуйста, помогите мне разобраться в этом вопросе.

Я попытался найти аналогичный ответ, но мне не повезло (также я новичок, поэтому я не очень знаком с JSON).

Сообщите мне, верен ли мой способ публикации вопроса или нужно ли внести какие-либо правки?

КОД PHP:

add_action('wp_ajax_state_list_book_appointment','state_list_book_appointment');
add_action('wp_ajax_nopriv_state_list_book_appointment','state_list_book_appointment');
function state_list_book_appointment()
{

    $states = get_field('state_options', 'option');

    $output = [];
    foreach ($states as $state) {
        if ($state['booking_Appointment']) {
             $output[] = [
            'state_name' => $state['store'] . ' (' . $state['state'] . ')',
            'state_email' => $state['store_email']
        ];
        }
    }
    echo json_encode($output);
    die();
}

JAVASCRIPT:

$(document).ready(function() {
    if ($('#input_1_4').length > 0) {

        var store_lists_book_appointment;
        $('#input_1_4').on('change', function () {
                current_state = $(this).val();
                output = '';

                state_string = '(' + current_state + ')';
                console.info(state_string);
                $("#input_1_6").val($("#input_1_6 option:first").val());
                $.each($('#input_1_6 option'), function (idx, val) {
                    // assume state is in option format of ([state])
                    idx_of_state = $(val).val().indexOf(state_string);
                    if (idx == 0 || idx_of_state > 0) {
                        $(val).show();
                    } else {
                        $(val).hide();
                    }
                });
            });

        $.ajax({
            type:"GET",
            url: my_ajax_object.ajaxurl,
            data:{action: 'state_list_book_appointment'},
            beforeSend: function(){
                $('#catvalue').html('<i class = "fa fa-spinner fa-1x" style = "color:#000;text-align:center;"></i>');
            },
                    dataType: 'json',
                success: function (data) {
                    //console.info (data);
                    store_lists = JSON.parse(data);
                    //console.info(store_lists);
                    //store_lists_women = JSON.parse(data).women;
                    output = '<option>-- Please select --</option>';
                    $.each(store_lists, function (index, value) {
                        output += '<option style = "display:none" value = "' + value.state_name + '" data-email = "' + value.state_email + '">' + value.state_name + '</option>';
                    });
                    $('#input_1_6').html(output);

                }
            });




            $('#input_1_6').on('change', function () {
                selected_email = $('#input_1_6 option:selected').data('email');
                $('#input_1_10').val(selected_email);
            });


        // This function is to prevent Chrome frontend validation. It stop working actual submit function of the form
        $('#gform_submit_button_1').on('click', function(){
            $('#gform_1').submit();
        });
    }

});

Вы получаете сообщения об ошибках в консоли?

Gavin Simpson 31.05.2018 08:35

попробуйте изменить '$ (' # input_1_6 '). on (' change ', function ()' на '$ (document) .on (' change ',' # input_1_6 ', function (e) {...}', а затем то же самое для всех ваших событий onchange.Это просто предположение без каких-либо ошибок.

Gavin Simpson 31.05.2018 08:38

Ранее я получал сообщение об ошибке: SyntaxError: JSON.parse: неожиданный символ в строке 1, столбец 1 данных JSON, но я изменил тип данных: 'json', и теперь сообщения об ошибке нет.

Navjot Kaur 31.05.2018 08:38

Немного необычно видеть «получить» в качестве типа сообщения. Обычно должно быть 'post'

Gavin Simpson 31.05.2018 08:41

Я внес изменение, о котором вы просили, но оно все еще не работает. Мне не хватает какого-либо элемента, кроме php и javascript?

Navjot Kaur 31.05.2018 08:42

Нет, я так не думаю. Это может быть что-то вроде простой опечатки. Возможно, поместите console.info в $ ('# input_1_6'). On ('change', function (), чтобы подтвердить, что selectred_email получает значение, то есть запускается событие onchange.

Gavin Simpson 31.05.2018 08:47

Я могу выбрать состояние, т.е. при изменении '# input_1_4'), javascript отправляет значение в журнал консоли, но не показывает хранилища для варианта 1_6 для выбранного значения (оба раскрываются)

Navjot Kaur 31.05.2018 08:58

Добавьте и "error: function (errorThrown) {...}" проверку к функции ajax, чтобы вы могли видеть, выдает ли ajax ошибку.

Gavin Simpson 31.05.2018 09:12

хорошо, посмотрим ...

Gavin Simpson 31.05.2018 09:37

отладка показывает "store_lists" как неопределенное, пожалуйста, измените "store_lists = JSON.parse (data);" в "var store_lists = JSON.parse (data);". Посмотрев еще раз, я вижу, что многие переменные не имеют 'var', поэтому я не уверен в этом.

Gavin Simpson 31.05.2018 09:57

Ваша функция ajax срабатывает только при загрузке, а не при любом событии. В этом я уверен на все 100%. Я думаю, что, возможно, вы закрыли $ ('# input_1_4'). On ('change', function () {слишком рано (с "})", который, возможно, должен идти после функции ajax .. Это в конце концов Функция ajax, которая должна обновлять параметры при выборе состояния?

Gavin Simpson 31.05.2018 10:28

Привет, Гэвин, спасибо, что посмотрели на вопрос, но я обнаружил ошибку. Поскольку я использовал дочернюю тему для настройки данных, я снова объявлял переменную ajax для получения URL-адреса, в то время как в основной теме уже был включен ajax, я думаю, что это противоречило js и не отправляло никаких вызовов. Я изменил переменную Url. вызвать элемент к теме по умолчанию, и он начал работать. Итак, теперь он работает. В остальном код был в порядке.

Navjot Kaur 01.06.2018 03:55

Приятно слышать, молодец.

Gavin Simpson 01.06.2018 06:48
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
13
62
0

Другие вопросы по теме