jquery 为什么当点击编辑它不显示模型的点击数据在一个选择列表,因为我想显示模型?

5us2dqdw  于 2023-11-17  发布在  jQuery
关注(0)|答案(1)|浏览(95)

这是我的控制器功能

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);
                });

            })
        },
    }


因此,当用户点击编辑按钮时,所有数据都已填充,但模型没有自动填充,我也调用了该函数,但它仍然没有填充模型,一切都运行正常,除了请告诉我该怎么做。

zbq4xfa0

zbq4xfa01#

我认为您需要确保在显示编辑模式并设置make_id之后调用App.汽车.getModel函数。我可以看到在您的代码中,您正在使用回调函数调用App.汽车.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检索和返回模型数据。

相关问题