【发布时间】:2018-08-26 06:58:52
【问题描述】:
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');
ajaxForm.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(不可处理实体)错误。为什么我的方法在这里是错误的,然后我该如何打印错误消息。请帮忙。先感谢您。
【问题讨论】:
-
从 laravel 发送 json 数据并从 ajax 响应中读取
-
Laravel 已经发送了一个很好的错误响应,你需要做的就是在客户端处理错误
-
我建议你使用 axios 和 Vue.js 来做。很容易。您可以将数据发送到 laravel,然后在控制器中创建
if(request()->wantsJson())并返回数据。然后在前端,你抓住它。并显示在屏幕上。这可能看起来很难,但实际上是 1 分钟的工作。
标签: php ajax laravel laravel-validation laravel-5.6