Функция автозаполнения в Laravel AJAX не отображается или автоматически заполняет другие входные данные

#php #jquery #ajax

#php #jquery #ajax

Вопрос:

У меня есть форма. Эта форма принимает 1 ввод в качестве идентификатора, который является электронной почтой. Другими 2 входами являются nama и kelas . Они определяются на основе ввода электронной почты. Поэтому, если я выберу электронное письмо, остальные 2 входа будут автоматически заполнены или появятся. Но почему-то моя функция не автоматически заполняет эти входные данные. Это должно быть, если я выбираю электронное письмо, тогда nama kelas в поле ввода автоматически заполняется / появляется.

Это представление (create.blade.php ). Скрипт для jquery включен в мой файл шаблона, который является jquery <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X 965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH 8abtTE1Pi6jizo" crossorigin="anonymous"></script>

 @extends('template')
@section('content')
<meta name="_token" content="{{csrf_token()}}" />
<div id="bk">
    <h2>Tambah Bobot dan Kriteria</h2>
    <form action="{{url('/datacalon/submit')}}" method="POST">
        @csrf
        <div class="form-group">
          <label>Email Calon Pengurus OSIS</label>
          <select name="email" id = "email" onblur="autofill()" class="form-control">
            <option disabled selected> -- email calon pengurus osis -- </option>
            @foreach ($columns as $c)
              <option value="{{ $c->email }}" id = "email" onblur="autofill()" >{{ $c->email }}</option>
            @endforeach
          </select>
        </div>
        <div class="form-group">
            <label>Nama Calon Pengurus OSIS</label>
            <input type="text" name="nama" id="nama" class="form-control" readonly>
        </div>
        <div class="form-group">
            <label>Kelas Calon Pengurus OSIS</label>
            <input type="text" name="kelas" id="kelas" class="form-control" readonly>
        </div>
        <div class="form-group">
            <input class="btn btn-primary form-control" type="submit" value="Submit">
        </div>
    </form>
</div>

<script type="text/javascript">
            function autofill(){
                var email = $("#email").val();
                $.ajaxSetup({
                headers: {
                    'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
                    }
                });
                
                $.ajax({
                url: '/getPengurusOsis/'   email,
                method: "get",
                dataType: 'json',
                processData: false,
                contentType: false,
                success: function(response) {
                     $("#nama").val(response.nama)
                    $("#kelas").val(response.kelas)
                    }
                });
            }
</script>
@endsection
 

Это маршрут (web.php )

 Route::get('/datacalon', 'DatacalonController@index');
Route::get('/datacalon/create', 'DatacalonController@create');
Route::get('/getPengurusOsis/{email}', 'DatacalonController@getCalonPengurusOsis');
 

Это контроллер (DataCalonController.php )

 <?php

namespace AppHttpControllers;

use IlluminateHttpRequest;
use DB;

class DatacalonController extends Controller
{
    public function index(){
    $halaman = 'datacalon';
    // $columns = DB::table('bobotkriteria')->select('nama')->get();
    $columns = DB::table('bobotkriteria')->get();
    return view('datacalon.index',['columns' => $columns]);
    }

    public function create(Request $req){
        $columns = DB::table('users')->get();
        return view('datacalon.create',['columns' => $columns]);
    }

    public function getCalonPengurusOsis($email){
        $columns = DB::table('users')->where('email',$email)->first();
        return response()->json([
           'nama' => $columns->nama,
           'kelas' => $columns->kelas
        ]);
    }
}
 

Что я пропустил в коде? Пожалуйста, помогите

Комментарии:

1. Версия jQuery slim не содержит модуля Ajax. Со страницы загрузки : «Вы также можете использовать тонкую сборку, которая исключает модули ajax и effects:»

2. о, хорошо, я изменил его на min.js . Это работает, но почему-то я должен щелкнуть в любом месте страницы, чтобы автоматически заполнить ее, спасибо @MagnusEriksson. Я изменил его на onclick