这是我的控制器功能
public function getModel($make_id = null)
{
$make_id = request()->make_id;
$carsmodel = CarModel::where('make_id', $make_id)->orderBy('model', 'ASC')->get();
return response()->json(['carsmodel' => $carsmodel]);
}
这是我的js
getModel: function (url,make_id) {
m=null;
$.ajax({
url: url,
type: "POST",
data: { make_id: make_id,},
success: function (response) {
$("#model_id").empty();
$("#model_id").append('<option value="">Choose</option>');
$.each(response.carsmodel, function (index, carModel) {
$("#model_id").append(
'<option value="' +carModel.id + '">' + carModel.model + "</option>"
);
});
},
});
return m;
},
这就是它的实施方式
$("#make_id").on('change', function() {
var make_id = $(this).val();
var url = '{{ route("cars.submodels.getModel")}}';
App.Cars.getModel(url, make_id);
});
这是用户单击编辑按钮时加载的功能
App.Cars.SubModels = {
loadEditData(e) {
var $url = $(e).attr('href');
var url = '/admin/cars/submodels/getModel';
$.get($url, function($response) {
//console.log($response.model.model)
$('#createEditForm').trigger('reset')
$('#createEditModal').modal('show')
$('#make_id').val($response.resp.make_id)
//App.Cars.getModel(url, $response.resp.make_id);
$('#sub_model').val($response.resp.sub_model)
$('#sub_model_ar').val($response.resp.sub_model_ar)
$('#year_from').val($response.resp.year_from)
$('#year_to').val($response.resp.year_to)
$('#car_source').val($response.resp.car_source)
$('#method').val("PUT");
$('#sub_model_image').removeAttr('required');
$('#url').val($response.route);
$('#create').html("Update");
$("form#createEditForm input").removeClass("error");
$("form#createEditForm input").parent().find("label.error").remove();
$(".close").on("click", function() {
$("#createEditModal").modal('hide');
});
$("#close-btn").on("click", function() {
$("#createEditModal").modal('hide');
});
App.Cars.getModel(url, $response.resp.make_id, function(response) {
$('#model_id').empty().append('<option value="">Choose</option>');
$.each(response.carsmodel, function(index, carModel) {
$("#model_id").append(
'<option value="' + carModel.id + '">' + carModel.model + "</option>"
);
});
$('#model_id').val($response.resp.model_id);
});
})
},
}
因此,当用户单击编辑按钮时,所有数据都已填充,但模型未在此处自动填充,我也调用该函数,但它仍然未填充模型,一切运行正常,除了请告诉我该怎么做。
我认为您需要确保在显示编辑模式并设置 make_id 之后调用 App.Cars.getModel 函数。我可以看到,在您的代码中,您正在使用回调函数调用 App.Cars.getModel,这可能不是必需的。也许你应该尝试简化它:
像这样:
$('#createEditModal').modal('show');
$('#make_id').val($response.resp.make_id);
// Call App.Cars.getModel directly
App.Cars.getModel(url, $response.resp.make_id);
// ... rest of the code
另一件事,您是否打开浏览器的开发者控制台并检查是否有任何 JavaScript 错误? JavaScript 代码其他部分中的一些错误可能会干扰填充模型选择列表的代码的执行。
您还可以在控制器(getModel)中检查服务器端代码函数。查看是否根据提供的 make_id 正确检索并返回模型数据。