laravel中ajax 异步加载数据,选择对应的学校对应的专业

478 阅读1分钟

html代码:

js代码:

$('#school').change(function () {
    var school_id = $(this).val();
    $.ajax({
        url: "http://hbcrjyw.test/online/school",
        type: "get",
        dataType: "json",
        data: {school_id: school_id},
        success: function (data) {
            // console.log(data);
            $('#major').html('<option value="">请选择专业</option>');
            $.each(data, function (i, item) {
                $("#major").append("<option value='" + item.id + "'>" + item.name + "</option>");
            });
        }
    })
});

控制器代码:

/**
 * 报名页面
 */
public function edit(Request $request, $id)
{
    //查出所有学校
    $schools = School::with('majors')->get();
    //查出所选择的专业
    $major_id = $request->major_id;
    $first_major = Major::with('school')->find($major_id);
    //查出学校下的专业
    $first_school = School::with(['majors' => function ($query) {
        $query->orderBy('grade');
    }])->find($id);

    return view('home.online.edit', compact('schools', 'first_major', 'first_school'));
}

/**
 * 查出所有学校对应的专业
 */
public function school(Request $request)
{
    $school_id = $request->school_id;
    $majors = Major::where('school_id', $school_id)->orderBy('grade')->get();
    echo json_encode($majors);
}
路由:
Route::group(['prefix' => 'online'], function () {
    Route::get('school', 'OnlineController@school')->name('online.school');
});
Route::resource('online', 'OnlineController');