#php #laravel #laravel-7
#php #laravel #laravel-7
Вопрос:
Я использую Laravel 7 и PHP 7.4.
Я пытаюсь создать зависимый выпадающий список в своей форме, используя ajax. Я отправляю column_id и column в ajax-ответе на мой выпадающий список. Мой выпадающий список работает абсолютно нормально, но есть проблема с моим запросом к базе данных или ответом ajax. В моем выпадающем списке отображаются значения столбца, но когда я пытаюсь сохранить в базе данных, сохраняется только «идентификатор» столбца, а не значение.
Я просто хотел отправить column_id и column оба в свой выпадающий список, но сохранить значение только в базе данных.
Блейд
<form action="{{route('form_for_private_sellers')}}>
<div class="form-group">
<select name="make" id="make" data-dependent="model">
<option value="">Select Make</option>
<option value="254">Abarth</option>
</select>
</div>
<div class="form-group">
<select name="model" id="model">
<option selected value="">Select Model*</option>
</select>
</div>
</form>
Javascript
$("#make").change(function()
{
var id=$(this).val();
var make_id = id;
var dependent = $(this).data('dependent');
var _token = $('input[name="_token"]').val();
$.ajax({
url:"{{ route('fetchModel') }}",
method:"POST",
data:{make_id:make_id, _token:_token,dependent:dependent},
success:function(result)
{
$('#' dependent).html(result);
}
});
});
Контроллер
public function fetchModel(Request $request)
{
$get_make_id = $request->get('make_id');
$dependent = $request->get('dependent');
$fetch_model = DB::table('auto_databases_one')
->select('model','model_id')
->distinct()
->where('make_id', '=', $get_make_id)
->where(function ($query) {
$query->orWhere('is_active', '=', '1');
})
->orderBy('model', 'ASC')
->get();
$show_model = '<option value="">Select ' . ucfirst(dependent) . '</option>';
foreach ($fetch_model as $row) {
$show_model .= '<option value="' . $row->model_id . '">' . $row->model . '</option>';
}
echo $show_model;
}
public function form_for_private_sellers(Request $request)
{
$store_seller = new Sellers();
$store_seller->make = $request['make'];
$store_seller->model = $request['model'];
}
Комментарии:
1. вы ничего не сохранили в своем методе контроллера. где находится часть сохранения?
2. @AndySong Я не знаю, что еще мне следует делать. Не могли бы вы предложить мне изменения, пожалуйста?
3. вы также должны опубликовать код, который вставляет что-то в базу данных
4. по крайней мере, вам нужно сообщить нам, какой столбец хотите сохранить, в какую таблицу в принципе, вам нужен еще один запрос на публикацию данных, теперь у вас есть только один запрос get. У вас должен быть ajax-запрос, когда вы нажимаете кнопку сохранить. И это то место, где можно сохранить запись.
5. @AndySong Теперь я обновил свой вопрос всем кодом. Извините за путаницу
Ответ №1:
Я предполагаю, что есть кнопка с id="save"
.
$("#save").click(function(e)
{
e.preventDefault();
const make = $("#make option:selected").val();
const model = $("#model option:selected").val();
const _token = $('input[name="_token"]').val();
$.ajax({
url:"{{route('form_for_private_sellers')}}",
method:"POST",
data:{make, _token, model},
success:function(result)
{
console.log('all done');
}
});
});
public function form_for_private_sellers(Request $request)
{
$store_seller = new Sellers();
//you may need to adjust this part as I do not know your properties called.
$store_seller->make = $request->make;
$store_seller->model = $request->model;
$store_seller->save();
}
Комментарии:
1. Мой сценарий состоял не только в том, чтобы отправить значения, но и в том, чтобы посмотреть, что происходит не так с моим ajax-ответом, и это то, что я исправил с помощью вашей подсказки по коду. Спасибо ..!!!!!!!!!!