Я пытаюсь изменить содержимое раскрывающегося списка в зависимости от значения первого.
К сожалению, я не получаю никаких ошибок, чтобы понять, почему он не работает.
<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>
Вы проверили вкладку сети в инструментах chrome dev, чтобы узнать, какой ответ возвращается при вызове ajax?
$("towns").change() .. у вас вообще есть элемент под названием <towns>? Или вы хотите запросить его по идентификатору $("#towns").change() или по классу $(".towns").change()? Я предполагаю, что вы захотите сделать $("#town"), так как это то, из чего вы извлекаете ценность. То же самое и с $("suburbs").load().
У меня есть раскрывающийся список для городов, да и раскрывающийся список для пригородов, которые я хочу заселить.
и вы не указали полный URL
так что ваш путь может быть неправильным
@JohnBell, я только что посмотрел, но я вообще не вижу сетевого трафика для вызова ajax. Значит, вызов ajax на самом деле не активируется?
Не думаю, что вы правильно поняли мой предыдущий комментарий. Пожалуйста, покажите нам также HTML-код (в частности, раскрывающиеся списки городов и пригородов). Кроме того, это: var town_id = 0; довольно бесполезен, поскольку вы никогда не используете переменную town_id в своем коде.
измените $ ("города") на $ ("# города"), $ ("пригород") на $ ("# пригород"), townid = $ ('# город'). val (); to townid = $ (это) .val ();
@afsalc спасибо за изменения, я сделал эти изменения безуспешно.
@MagnusEriksson Я отредактировал код, как вы просили. я взял 'var town_id = 0;' out и просто добавил var townid = $ (this) .val ();
Ваше обновление сделало его еще более запутанным. У вас есть $("towns") и $("suburbs"), но у вас вообще нет никаких HTML-элементов, которые каким-либо образом ссылаются на эти имена (имя элемента, имя формы, идентификатор или класс). Что вы ожидаете от $("towns") и $("suburbs") на самом деле? jQuery может творить чудеса для вас, но он не может читать ваши мысли.
@MagnusEriksson Извините, мне нужно спать, потому что мозг поджарен. Но хорошо, что я пытаюсь сделать, я использую api доставки для интернет-магазина. Теперь для получения списка пригородов api требуется передать town_id. Когда у меня появится пригород, я могу рассчитать стоимость доставки. Итак, у меня есть раскрывающийся список городов, работающий со значением каждого town_id, а затем после выбора элемента. создается раскрывающийся список для списка пригородов.






<script>
$(document).ready(function() {
var town_id = $('#town').val();
$("#towns").on('change', function() {
$("#suburbs").load(
"/assets/php/suburbs.php", {
town_id: town_id
});
});
});
Я сдался после прочтения комментариев к твоему сообщению. Я умоляю вас изучить этот код и увидеть различия, которые я сделал, чтобы заставить его работать, а не копировать и вставлять.
Вы получаете $ _POST ['town_id']?