我快到了。我只是为Web应用程序创建了一个搜索功能,该功能允许管理员搜索用户。搜索后,AJAX对象将按原样返回。但是,当尝试将其输出到我的表主体或行中时,除表元素外似乎什么都没有显示。我确定我错过了一件小事吗?
我尝试使用“ data.name”访问数据,但是什么也没有发生,但是如果我将其保留为“ data”,那么它将移动到没有信息的空白表中。我不确定它是否应该在表中显示请求信息,还是要为返回的每个元素创建其他行。所以我看了:
Search with ajax on click and show results in same page laravel
我正在使用Laravel。无论如何,我将在下面发布我的代码。
控制器
public function searchUser(){
$term = request()->input('user');
$search = User::where('name', 'LIKE', '%' . $term . '%')->paginate(10);
return response()->json($search);
}
查看和JS
<form class="form-inline" id="user-search">
@csrf
<input class="form-control mr-sm-2" type="search" placeholder="Search by name or username"
name='search-user' id="search" style="width: 16rem;">
<button class="btn" type="button" id="find-user"><i class="fa fa-search"></i></button>
</form>
<script type="text/javascript">
jQuery(document).ready(function () {
$('#find-user').on('click', function (e) {
e.preventDefault();
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "{{route('admin.search')}}",
type: 'GET',
data: {user: jQuery('#search').val()},
success: function (data) {
console.log(data);
$('tbody').html(data);
}
});
})
});
</script>
显示结果的表
<table class="table table-striped table-hover" id="main-table">
<thead>
<tr>
<th scope="col">Username</th>
<th scope="col">Name</th>
<th scope="col">Email</th>
<th scope="col">Delete</th>
</tr>
</thead>
<tbody>
@foreach($users as $u)
<tr class="test">
<td>{{$u->username}}</td>
<td>{{$u->name}}</td>
<td>{{$u->email}}</td>
</tbody>
</table>
它也使用console.log报告回搜索到的对象,所以我知道我的控制器工作正常,它只是试图将JSON转换为实际可读的输出?