Ответ Ajax не отображается в блейд-Laravel

#javascript #php #laravel

#javascript #php #laravel

Вопрос:

У меня небольшая проблема с моим кодом.

У меня есть одно выпадающее поле в моей форме. Я применил к нему событие onclick. После нажатия я отправляю ajax-вызов контроллеру, где я вызываю свой запрос для извлечения всего списка лет и возвращаю его обратно в blade в ответ.

Мой код работает, и я могу видеть ответ ajax в предварительном просмотре на вкладке Сеть, но проблема в том, что значения не отображаются в раскрывающемся списке блейда.

Блейд

    <div class="form-group">
      <select id="regist_year" data-dependent="registration">
             <option selected value=""></option>
       </select>
   </div>
  

Javascript

 $('#regist_year').on('click', function(e){
    e.preventDefault();
    var _token = $('input[name="_token"]').val();
    var all_years = $(this).data('dependent');

    $.ajax({
        url:"{{ route('getAllyears') }}",
        method:"POST",
        data:{_token:_token,all_years:all_years},

        success:function(result)
        {
             $('#' all_years).html(result);
        }
    });
});
  

Контроллер

 public function getAllyears(Request $request)
{

    $all_years = $request->get('all_years');

    $years = DB::table('auto_databases_one')
        ->select('year')
        ->distinct()
        ->orderBy('year', 'ASC')
        ->get();

    $get_years = '<option value="">Select ' . ucfirst($all_years) . '</option>';
    foreach ($years as $row) {
        $get_years .= '<option value="' . $row->year . '">' . $row->year . '</option>';
    }
    echo $get_years;
}
  

Комментарии:

1. Есть ли элемент с id="registration" ? Ничего не отображается. Также не рекомендуется использовать событие click для <select> , поскольку оно будет срабатывать как при открытии, так и при выборе

2. @N69S Как я писал выше, я вижу ответ, представляющий собой полный список выпадающего списка на вкладке сеть, но он не отображается в моем раскрывающемся списке blade into.

3. @charlietfl Что вы предлагаете использовать тогда для select ?

4. @charlietfl Мои значения отображаются, но когда я выбрал значение из выпадающего списка, оно было изменено на select снова!

5. Ненормально добавлять новые параметры в select, который был просто использован, чтобы быть честным. Почему вам нужно их заменить? Более распространенный подход заключается в том, чтобы выделение заполняло другой элемент. Как пользователь вообще узнает, что вы изменили параметры, если они находятся в одном и том же?

Ответ №1:

ну, вы помещаете hyml в, $('#' all_years) который $('#regist_year').data('dependent'); ведет к $('#registration') , и у вас нет dom с этим идентификатором

измените его на

 $('#regist_year').html(result);
  

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

Комментарии:

1. Мои значения отображаются сейчас, но есть другая проблема. Я только что удалил предотвращение по умолчанию, но когда я выбираю значение nay, оно исчезает!!!

2. @Шаан йоп, это за то, что событие запускается при нажатии

3. Я решил это сам. $(‘#select_id’).focus(функция() сработала для меня!!!!!! Спасибо за ваше время.