Зависимое динамическое меню выбора, второе меню не получает данные

#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. я обновил функцию контроллера в ответе