【问题标题】:Getting City list base on Selected Province Stored in database, in Edit Method, in laravel 7获取基于所选省份的城市列表存储在数据库中,在编辑方法中,在 laravel 7
【发布时间】:2020-04-16 15:15:19
【问题描述】:

如何在编辑方法中根据所选省份获取城市列表?

控制器代码:

public function edit($id)
{
    $user = User::find($id);
    $provinces = DB::table('provinces')->get()->all();
    $cities = DB::table('cities')->get()->all();
    return view("management.profiles.edit", compact('user','provinces', 'cities'));
}
public function getCityList($province_id)
{
    $cities = DB::table('cities')->where("province_id",$province_id)->get();
    return response()->json($cities);
}

路线:

Route::get('change/profile/update', 'ProfileController@update')->name('panel.profile.update');
Route::get('panel/management/get-city-list/{province_id}','Management\UserController@getCityList');

查看:

<div class="row">
                                        <div class="col-xl-6">
                                            <div class="form-group">
                                                <label for="province">Province :</label>
                                                <select name="province" id="province" class="form-control">
                                                    <option value="">------------</option>
                                                    @foreach ($provinces as $province)
                                                        <option value="{{ $province->id }}" {{ $user->province == $province->id ? 'selected' : '' }}>{{ $province->name }}</option>
                                                    @endforeach
                                                </select>
                                                @error('province')
                                                <div class="invalid-feedback"> {{ $message }}</div>
                                                @enderror
                                            </div>
                                        </div>
                                        <div class="col-xl-6">
                                            <div class="form-group">
                                                <label for="city">City :</label>
                                                <select name="city" id="city" class="form-control" data-old-id="{{$user->city}}">
                                                    <option value="">-------------</option>
                                                </select>
                                                @error('city')
                                                <div class="invalid-feedback"> {{ $message }}</div>
                                                @enderror
                                            </div>
                                        </div>
                                    </div>

脚本:

<script type="text/javascript">
    function load_cities() {
        let provinceID = $('#province').val();
        if (provinceID === null) {
            id = $('#province').eq(0).val();
        }
        if (provinceID) {
            $.ajax({
                url: '/panel/management/get-city-list/' + encodeURI(provinceID),
                type: "GET",
                dataType: "json",
                success: function (data) {
                    $("#city").empty();
                    $.each(data, function (key, value) {
                        let selected = null;
                        if ($('#city').data('old-id') && value.id == $('#city').data('old-id')) {
                            selected = 'selected';
                        }
                        let optionTag = `<option value="` + value.id + `" ` + selected + `>` + value.name + `</option>`;
                        $('#city').append(optionTag);
                    });
                }
            });
        } else {
            $("city").empty();
        }
    }
</script>

我的问题是:当我编辑用户配置文件时,无法根据数据库中存储的城市和省份 ID 选择城市和省份字段。我不知道我的问题在哪里!!!

【问题讨论】:

    标签: javascript laravel web


    【解决方案1】:

    选择省份时必须调用load_cities(),默认也调用它

    1. &lt;select name="province" id="province" class="form-control" onchange="load_cities()"&gt;
    2. 页面加载时也调用load_cities()

    【讨论】:

      猜你喜欢
      • 2018-06-26
      • 1970-01-01
      • 2018-10-12
      • 1970-01-01
      • 2019-09-01
      • 1970-01-01
      • 2018-03-21
      • 2019-08-25
      • 1970-01-01
      相关资源
      最近更新 更多