testAjax函数在PostsController类中:
public function testAjax(Request $request)
{
$name = $request->input('name');
$validator = Validator::make($request->all(), ['name' => 'required']);
if ($validator->fails()){
$errors = $validator->errors();
echo $errors;
}
else{
echo "welcome ". $name;
}
}
在web.php文件中:
Route::get('/home' , function(){
return view('ajaxForm');
});
Route::post('/verifydata', 'PostsController@testAjax');
jaxForm.blade.php文件夹中的文件名:
<script src="{{ asset('public/js/jquery.js') }}"></script>
<input type="hidden" id="token" value="{{ csrf_token() }}">
Name<input type="text" name="name" id="name">
<input type="button" id="submit" class="btn btn-info" value="Submit" />
<script>
$(document).ready(function(){
$("#submit").click(function(){
var name = $("#name").val();
var token = $("#token").val();
/**Ajax code**/
$.ajax({
type: "post",
url:"{{URL::to('/verifydata')}}",
data:{name:name, _token: token},
success:function(data){
//console.log(data);
$('#success_message').fadeIn().html(data);
}
});
/**Ajax code ends**/
});
});
</script>
所以在点击提交按钮时通过输入一些数据然后输出提示信息(echo“welcome“. $name; )正在打印。但当我点击提交按钮与空文本框,然后它不打印错误消息从控制器,它抛出了一个422(不可处理的实体)错误在控制台。为什么我的方法是错误的,我如何打印错误消息,然后。请帮助。谢谢你提前。x1c 0d1xx 1c 1d 1x
5条答案
按热度按时间iqjalb3h1#
你的方法实际上并没有错,只是你需要捕获 AJAX 请求的错误响应,而当Laravel验证失败时,它会抛出一个
Error 422 (Unprocessable Entity)
并显示相应的错误信息。在控制器上
f1tvaqid2#
下面是一个更好的验证方法:
在控制器中:
然后,框架将为您创建一个验证器并验证请求。如果验证失败,它将抛出一个
ValidationException
。假设您尚未覆盖验证异常的呈现方式,以下是内置异常处理程序将运行的默认代码
同样,这是由框架为您处理的。
在客户端,您应该能够:
ss2ws0br3#
在PHP控制器中处理的最佳方式:
tvz2xvvm4#
Vannilla Javascript中的表单验证代码
主计长
pbpqsu0x5#
Jquery代码:
控制器代码:
如欲了解更多详细信息,请访问:https://impulsivecode.com/validate-input-data-using-ajax-in-laravel/