gpt4 book ai didi

php - Laravel 5.2 - ajax 检查数据库中是否存在值

转载 作者:可可西里 更新时间:2023-11-01 00:13:12 25 4
gpt4 key购买 nike

我正在创建一个员工层次结构,并在为新员工设置上级时我想检查该员工是否已经存在于数据库中......但是 :) 我想用 AJAX 来实时了解它而不发送表格..

我完全不知道该怎么做,因为我是 Laravel 的新手..

                           ***UPDATED BASED ON ADVICES:***

我在 add_emp.blade.php 中有一个表单:

<form action="../create_employee" method="POST">     
<button class="button" type="submit" style="float:right"><span>Save</span></button>
<div style="clear:both"></div>
<fieldset>
<legend>Personal data</legend>
<label for="first_name">First name:</label><input type="text" class="add_emp required" name="first_name" value="" /><br />
<label for="last_name">Last name:</label><input type="text" class="add_emp required" name="last_name" value="" /><br />
<label for="superior">Superior:</label><input type="text" class="add_emp" name="superior" value="" id="superior_list" /><br />
</fieldset>
</form>

这是 add_employee.blade.php 中的一个脚本

<script type="text/javascript">
$('#superior_list').blur(function(){

var first_name = $('#superior_list');

$.ajax({
method: "POST",
url: '/check_superior',
data: { superior: superior }
})
.done(function( msg ) {
if(msg == 'exist') {
//employee exists, do something...
alert( "good." );
} else {
//employee does not exist, do something...
alert( "bad." );
}
});
})
</script>

处理上级路线:

Route::post('check_superior', 'EmployeeController@check_superior'); 

这是 Controller 函数 check_superior:

public function check_superior(Request\AjaxUserExistsRequest $request){ 

if(Employee::where('superior','=',$request->input('superior'))->exists()){
return "exist";
}else{
return "not exist";
}
}

但仍然无法正常工作...您能告诉我问题出在哪里吗?

                             *** FINAL SOLUTION ***

表格:

<form action="../create_employee" method="POST">     
<button class="button" type="submit" style="float:right"><span>Save</span></button>
<div style="clear:both"></div>
<fieldset>
<legend>Personal data</legend>
<label for="first_name">First name:</label><input type="text" class="add_emp required" name="first_name" value="" /><br />
<label for="last_name">Last name:</label><input type="text" class="add_emp required" name="last_name" value="" /><br />
<label for="superior">Superior:</label><input type="text" class="add_emp" name="superior" value="" id="superior_list" /><span id="check-superior-status"></span><br />
</fieldset>
</form>

添加到 app.blade.php

meta name="csrf-token"content="{{ csrf_token() }}"

Controller

public function check_superior(Request $request){ 

if(Employee::where('first_name','=',$request->input('superior_fname'))
->where('last_name','=',$request->input('superior_lname'))
->exists()){
return "exist";
}else{
return "not exist";
}
}

最终的 emp.blade.php AJAX 脚本

// place data after SEPERIOR selection
$( "#superior_list" ).blur(function() {

var sup_list = $(this).val();
var sup_arr = sup_list.split(' ');
var superior_fname = sup_arr[0];
var superior_lname = sup_arr[1];
var superior = superior_fname+" "+superior_lname;

// control print out
//$('#check-superior-status').text(superior);

// get real data
$.ajax({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
method: "POST",
url: '/check_superior',
data: { superior_fname: superior_fname, superior_lname: superior_lname },
/* // debug only
error: function(xhr, status, error){
$('#check-superior-status').text(xhr.responseText);
},
*/
success: function(data){
$('#check-superior-status').text(data);
}
})

});

这就像一个魅力:)谢谢你们..希望这会帮助别人..

最佳答案

首先提出请求。

php artisan make:request AjaxUserExistsRequest

然后打开请求文件(App\Http\Requests),找到如下内容:

public function validate(){
return [
//rules
];
}

这是您要坚持验证规则的地方,以便您可以检查提交的表单元素。

然后你应该使用依赖注入(inject)来强制你的请求进入 user_exists() 函数的第一个参数:

public function user_exists(Requests\AjaxUserExistsRequest $request){
return User::where('first_name', $request->first_name)->first();
}

如果不存在用户,这将返回 null,否则我们不关心响应。

最后,我们当然需要路线。

Route::post('employee_exists', 'EmployeeController@user_exists');

最后,我们将继续捕获表单提交并使用我们的 jQuery 检查用户是否存在。

$('#employee_form').submit(function(e){
e.preventDefault();

var first_name = $('#first_name').val(),
$this = this; //aliased so we can use in ajax success function

$.ajax({
type: 'POST',
url: '/employee_exists',
data: {first_name: first_name},
success: function(data){
if(data == null){
//then submit the form for real
$this.submit; //doesn't fire our jQuery's submit() function
} else {
//show some type of message to the user
alert('That user already exists!');
}
}
});
});

关于php - Laravel 5.2 - ajax 检查数据库中是否存在值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35933222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com