#jquery #ajax #laravel #eloquent
Вопрос:
Я пытаюсь создать зависимое меню выбора, в котором при выборе подразделения будет показан район под ним в другом меню выбора. Для этого я использовал ajax. Я новичок в «аяксе». Меню выбора выглядит следующим образом. введите описание изображения здесь
После выбора подразделения будет включено меню выбора района. Проблема, с которой я сталкиваюсь, заключается в том, что округ показывает нуль. Код получает идентификатор выбранного подразделения, но он не может выбрать район, зависящий от идентификатора. Моя база данных имеет отношение «один ко многим», где в одном подразделении много районов. Я даю код здесь. Контроллер
$data['divisions'] = DB::table('divisions')-gt;get(); return view('Backend.pages.seller.manage_seller_profile',compact('seller_profile','districts','universities','subs','councilors'),$data);
Я передаю много вещей, но в этой части я передаю только переменную данных.
Jquery
$(document).ready(function() { $('#division').change(function() { var division = $('#division').val(); $('#district').html(''); $.ajax({ url: '/getDistrict/{id}', type: 'GET', data: { myID: division }, dataType: "json", success: function(data) { $('#district').append('lt;option value=""gt;' "Select District" 'lt;/optiongt;'); $.each(data, function(key, district) { $('#district').prop('disabled', false).css('background', '#fff').append('lt;option value="' district.id '"gt;' district.name 'lt;/optiongt;'); }); }, error: function() { } }); }); });
Он может правильно отображать данные переменной деления. но что произошло потом, я не уверен.
Маршрут
Route::get('/getDistrict/{id}', 'AddressController@getDistrict');
Функция getDistrict
function getDistrict() { $id = $_GET['myID']; $res = DB::table('divisions') -gt;join('districts','divisions.id','=','districts.divisions_id') -gt;where('divisions.id', $id) -gt;get(); return Response::json($res); }
Я благодарен за любую помощь. Я не могу понять, где я все испортил.
Ответ №1:
я могу привести вам рабочий пример
лезвие
сначала выберите
lt;select class="select_option" name="category" id="category"gt; lt;option value=""gt;All Categorieslt;/optiongt; lt;option value="source"gt;Lead Source lt;/optiongt; lt;option value="group"gt;Grouplt;/optiongt; lt;option value="agent" gt;Agentlt;/optiongt; lt;option value="status"gt;Statuslt;/optiongt; lt;/selectgt;
второй выбор
lt;select class="form-control" name="selectedValue"id="selected-value"gt; lt;/selectgt;
аякс
lt;script type="text/javascript"gt; $("#category").change(function() { $.ajax({ url: "{{ url('/category-data') }}?category=" $(this).val(), method: 'GET', success: function(data) { $('#selected-value').html(data.html); } }); }); lt;/scriptgt;
Маршрут
Route::get('/category-data','UserLeadController@categoryData');
Контроллер
public function categoryData(Request $request) { $id = $request-gt;category; // call the name you are passing instead fo category $html = ''; if ($id) { $res = DB::table('divisions') -gt;join('districts','divisions.id','=','districts.divisions_id') -gt;where('divisions.id', $id) -gt;get(); foreach ($res as $re) { $html .= 'lt;option value="' . $re-gt;id . '"gt;' . $re-gt;name . 'lt;/optiongt;'; } } else { $html = 'lt;option value=""gt;Select lt;/optiongt;'; } return response()-gt;json(['html' =gt; $html]); }
Комментарии:
1. Спасибо вам за ваше предложение . Могу я спросить о формировании базы данных? Я не мог понять этих строк. если ($категория == ‘группа’). Должен ли я использовать $category== ‘division_id’ из таблицы округов?
2. это из моего проекта. Дайте мне секунду, я напишу функцию для вас
3. я обновил функцию контроллера в ответе