如何使用ajax检索数据?我有一些我在我的一些项目中使用的ajax代码,当从数据库中检索记录但不知道如何在laravel 5中进行,因为它有路由和控制器.
<select name="test" id="branchname">
<option value="" disabled selected>Select first branch</option>
<option value="1">branch1</option>
<option value="2">branch2</option>
<option value="3">branch3</option>
</select>
<select id="employees">
<!-- where the return data will be put it -->
</select>
和ajax
$("#branchname").change(function(){
$.ajax({
url: "employees",
type: "post",
data: { id : $(this).val() },
success: function(data){
$("#employees").html(data);
}
});
});
在我的控制器中,我宣布了两个雄辩的模型,模型1用于branchname表,模型2用于员工表
use App\branchname;
use App\employees;
所以我可以检索数据(参见下文)
public function getemployee($branch_no){
$employees = employees::where("branch_no", '=', $branch_no)->all();
return $employees;
}
如何返回我从employees表中提取的记录?从ajax首先与控制器通信的路由连接并返回对ajax post请求的响应?
任何帮助,建议,建议,想法,线索将不胜感激.谢谢!
PS:我是Laravel 5的新手.
解决方法:
首先,在< head>中添加以下条目主布局的一部分:
<Meta name="csrf-token" content="{{ csrf_token() }}" />
这将在您的视图中添加_token,以便您可以将其用于发布和类似请求,然后在每个请求上加载的公共JavaScript文件中添加以下用于全局ajax设置的代码:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('Meta[name="csrf-token"]').attr('content')
}
});
因此,对于需要此_token的方法,您无需担心或自己添加csrf_token.现在,对于post请求,您可以使用常规方法使用jQuery向Controller发出Ajax请求,例如:
var data = { id : $(this).val() };
$.post(url, data, function(response){ // Shortcut for $.ajax({type: "post"})
// ...
});
在这里,url应匹配员工的路由声明的url,例如,如果您已声明这样的路由:
Route::post('employees/{branch_no}', 'EmployeeController@getemployee');
然后,employees是url并返回json响应以填充Controller中的select元素,因此下面给出了所需的代码(包括javaScript):
$.post('/employees/'+$(this).val(), function(response){
if(response.success)
{
var branchName = $('#branchname').empty();
$.each(response.employees, function(i, employee){
$('<option/>', {
value:employee.id,
text:employee.title
}).appendTo(branchName);
})
}
}, 'json');
在Controller中,您应该发送json_encoded数据,例如:
public function getemployee($branch_no){
$employees = employees::where("branch_no", $branch_no)->lists('title', 'id');
return response()->json(['success' => true, 'employees' => $employees]);
}
希望你明白了.