Заполнение раскрывающегося списка из вызова ajax php

Я пытаюсь изменить содержимое раскрывающегося списка в зависимости от значения первого.

К сожалению, я не получаю никаких ошибок, чтобы понять, почему он не работает.

<script>

$(document).ready(function() {
    var town_id = 0;
    $("towns").change(function() {
        townid = $('#town').val();
        $("suburbs").load(
            "/assets/php/suburbs.php", {
                town_id: townid
            });
    });

});

Вот файл php.

<?php

$town_id = $_POST['town_id'];

use Mds\Collivery;

$collivery = new Collivery();

$suburbs = $collivery->getSuburbs($town_id);

foreach ($suburbs as $key => $suburb) {
    echo "<option value='";
    echo $key;
    echo "'>";
    echo $suburb;
    echo "</option>";
}

Однако, к сожалению, это не работает. есть идеи, где я ошибся?

//Редактировать

Как просили

<div class = "form-group">
  <label for = "towns">Select Town:</label>
  <select class = "form-control" id = "towns">
    @foreach ($towns as $key => $town)
    <option value = "{{$key}}">{{$town}}</option>
    @endforeach
  </select>
</div>
<div class = "form-group">
  <label for = "suburb">Select Suburb:</label>
  <select class = "form-control" id = "suburb">
  </select>
</div>

Вы получаете $ _POST ['town_id']?

Nirali 09.04.2018 13:21

Вы проверили вкладку сети в инструментах chrome dev, чтобы узнать, какой ответ возвращается при вызове ajax?

John Bell 09.04.2018 13:21
$("towns").change() .. у вас вообще есть элемент под названием <towns>? Или вы хотите запросить его по идентификатору $("#towns").change() или по классу $(".towns").change()? Я предполагаю, что вы захотите сделать $("#town"), так как это то, из чего вы извлекаете ценность. То же самое и с $("suburbs").load().
Magnus Eriksson 09.04.2018 13:31

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

LivingPhate 09.04.2018 13:37

и вы не указали полный URL

afsal c 09.04.2018 13:37

так что ваш путь может быть неправильным

afsal c 09.04.2018 13:38

@JohnBell, я только что посмотрел, но я вообще не вижу сетевого трафика для вызова ajax. Значит, вызов ajax на самом деле не активируется?

LivingPhate 09.04.2018 13:39

Не думаю, что вы правильно поняли мой предыдущий комментарий. Пожалуйста, покажите нам также HTML-код (в частности, раскрывающиеся списки городов и пригородов). Кроме того, это: var town_id = 0; довольно бесполезен, поскольку вы никогда не используете переменную town_id в своем коде.

Magnus Eriksson 09.04.2018 13:41

измените $ ("города") на $ ("# города"), $ ("пригород") на $ ("# пригород"), townid = $ ('# город'). val (); to townid = $ (это) .val ();

afsal c 09.04.2018 13:41

@afsalc спасибо за изменения, я сделал эти изменения безуспешно.

LivingPhate 09.04.2018 14:10

@MagnusEriksson Я отредактировал код, как вы просили. я взял 'var town_id = 0;' out и просто добавил var townid = $ (this) .val ();

LivingPhate 09.04.2018 14:24

Ваше обновление сделало его еще более запутанным. У вас есть $("towns") и $("suburbs"), но у вас вообще нет никаких HTML-элементов, которые каким-либо образом ссылаются на эти имена (имя элемента, имя формы, идентификатор или класс). Что вы ожидаете от $("towns") и $("suburbs") на самом деле? jQuery может творить чудеса для вас, но он не может читать ваши мысли.

Magnus Eriksson 09.04.2018 14:30

@MagnusEriksson Извините, мне нужно спать, потому что мозг поджарен. Но хорошо, что я пытаюсь сделать, я использую api доставки для интернет-магазина. Теперь для получения списка пригородов api требуется передать town_id. Когда у меня появится пригород, я могу рассчитать стоимость доставки. Итак, у меня есть раскрывающийся список городов, работающий со значением каждого town_id, а затем после выбора элемента. создается раскрывающийся список для списка пригородов.

LivingPhate 09.04.2018 14:53
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
13
45
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
<script>

$(document).ready(function() {
    var town_id = $('#town').val();
    $("#towns").on('change', function() {
        $("#suburbs").load(
            "/assets/php/suburbs.php", {
                town_id: town_id
            });
    });

});

Я сдался после прочтения комментариев к твоему сообщению. Я умоляю вас изучить этот код и увидеть различия, которые я сделал, чтобы заставить его работать, а не копировать и вставлять.

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