#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(функция() сработала для меня!!!!!! Спасибо за ваше время.