#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