Я пытаюсь получить динамические выпадающие списки, работающие с Laravel и Select2. Есть два выпадающих списка; один для компаний, т. е. «компания2», и один для мест, принадлежащих этой компании, то есть «location2».Динамические выпадающие списки с использованием select2, json request и Laravel
В течение жизни я не могу понять, как заставить «company2» выпустить событие, чтобы прочитать, что компании расположены, если он изменился! Что я делаю неправильно в разделе javascript этого кода! (все остальное работает)
Маршрут
Route::controller('api', 'ApiController');
Controller (ApiController)
public function getLocations($companyId)
{
return Location::where('company_id', $companyId)->lists('id', 'name');
}
Пример вывода из адреса "API/локаций/7"
{"Yellowstone":"8"}
View (форма открыта/закрыть раздел)
{!! Form::select('company_id', $companies, null, ['class' => 'company2 form-control']) !!}
{!! Form::select('location_id', $locations, null, ['class' => 'location2 form-control']) !!}
View (Javascript)
<script type="text/javascript">
$(document).ready(function() {
$(".company2").select2();
$(".location2").select2();
});
$(".company2").select2().on('change', function() {
var $company2 = $('.company2');
$.ajax({
url:"../api/locations/" + $company2.val(),
type:'GET',
success:function(data) {
var $location2 = $(".location2");
$location2.empty();
$.each(data, function(value, key) {
$location2.append($("<option></option>").attr("value", value).text(key));
});
$location2.select2();
}
});
}).trigger('change');
</script>
мнение передается список активных компаний при инициализации т.е.
$companies = Company::lists('trading_name', 'id');
Я вы не использовали select2 раньше, но закодировали эту скрипту после того, как быстрый взгляд на документы, и в нем есть пример способа запуска функции в событии изменения. http://jsfiddle.net/oy14tdus/ - это помогает? Я не уверен, что вам нужно переместить вашу '$ ('. Company2'). Select2(). On ('change'' ... событие/слушатель в функцию готовности документа - возможно, сделайте снимок – haakym
извините, если я Если вы неправильно поняли, у вас возникли проблемы с тем, чтобы запустить событие или у вас возникли проблемы с обновлением значений раскрывающегося списка местоположений при изменении раскрывающегося списка компании? Кроме того, вы, похоже, не передаете свое событие ajax a функция успеха, вам нужно что-то сделать с данными, которые вы получаете, - это то, что вам не хватает? – haakym
@haakym Извините, да, событие изменения отлично срабатывает, мне нужно знать, как передавать данные с маршрута на выпадающее меню «location2» –