Laravel 5.2 AJAX 验证警报消息不会显示给 laravel 视图
Laravel 5.2 AJAX validation alert message won't show to laravel view
我正在尝试使用 ajax 来显示错误。例如,如果表单输入为空。它有效,但它没有进入它的视图。每次我以空形式执行程序时,它都会显示这个。
我期待它会显示这样的警报
这是我的控制器
public function storeamp(Request $request){
$validator = Validator::make($request->all(), [
'guru_id' => 'required',
'mapel_id' => 'required',
]);
if ($validator->passes()) {
$ada = Mengampu::where('guru_id', $request['guru_id'])->where('mapel_id', $request['mapel_id'])->get()->count();
if($ada > 0){
Session::flash('tolong', 'Data Exist!');
return redirect()->to('guru/ampu');
} else{
return response()->json(['success'=>'Added new records.']);
}
}
return response()->json(['error'=>$validator->errors()->all()]);
}
这是我的 ajax 脚本
<script type="text/javascript">
$(document).ready(function() {
$(".btn-submit").click(function(e){
e.preventDefault();
var _token = $("input[name='_token']").val();
var guru_id = $("input[name='guru_id']").val();
var mapel_id = $("input[name='mapel_id']").val();
$.ajax({
url: url,
type:'POST',
data: {_token:_token, guru_id:guru_id, mapel_id:mapel_id},
success: function(data){
if ($.isEmptyObject(data.error)){
$('div.flash-message').html(data);
} else {
printMessageErrors(data.error)
}
},
});
function printMessageErrors(msg){
$(".print-error-msg").find('ul').html('');
$(".print-error-msg").css('display','block');
$.each( msg, function( key, value ) {
$(".print-error-msg").find("ul").append('<li>'+value+'</li>');
});
}
});
});
</script>
这里是 div 我放 print-error-msg
的地方。我把它放在上面 <form>
<div class="alert alert-danger print-error-msg" style="display:none">
<ul></ul>
</div>
响应在 json,所以你必须做 JSON.parse(data)
我认为您不会在 success 方法中遇到错误。也尝试使用错误函数。
$.ajax({
url: url,
type:'POST',
data: {_token:_token, guru_id:guru_id, mapel_id:mapel_id},
success: function(data){
$('div.flash-message').html(data);
},
error: function(data) {
printMessageErrors(data.error);
}
});
更换控制器
public function storeamp(Request $request){
$validator = Validator::make($request->all(), [
'guru_id' => 'required',
'mapel_id' => 'required',
]);
if ($validator->passes()) {
$ada = Mengampu::where('guru_id', $request['guru_id'])->where('mapel_id', $request['mapel_id'])->get()->count();
if($ada > 0){
Session::flash('tolong', 'Data Exist!');
return redirect()->to('guru/ampu');
} else{
return response()->json(['success'=>'Added new records.']);
}
}
$errors = $validator->errors()->all();
return view(hello.world)->with('errors', $errors);
}
查看
<div class="alert alert-danger print-error-msg" style="display: {{ count($errors) > 0 ? 'block' : 'none' }}">
<ul>
@foreach($errors as $error)
<li>{{$error['error']}}</li>
@endforeach
</ul>
</div>
我认为如果你的项目只专注于使用laravel,你不需要使用ajax来存储你的数据。laravel提供连接你的控制器的路由和你的看法..
希望这可以帮助您解决问题
我正在尝试使用 ajax 来显示错误。例如,如果表单输入为空。它有效,但它没有进入它的视图。每次我以空形式执行程序时,它都会显示这个。
我期待它会显示这样的警报
这是我的控制器
public function storeamp(Request $request){
$validator = Validator::make($request->all(), [
'guru_id' => 'required',
'mapel_id' => 'required',
]);
if ($validator->passes()) {
$ada = Mengampu::where('guru_id', $request['guru_id'])->where('mapel_id', $request['mapel_id'])->get()->count();
if($ada > 0){
Session::flash('tolong', 'Data Exist!');
return redirect()->to('guru/ampu');
} else{
return response()->json(['success'=>'Added new records.']);
}
}
return response()->json(['error'=>$validator->errors()->all()]);
}
这是我的 ajax 脚本
<script type="text/javascript">
$(document).ready(function() {
$(".btn-submit").click(function(e){
e.preventDefault();
var _token = $("input[name='_token']").val();
var guru_id = $("input[name='guru_id']").val();
var mapel_id = $("input[name='mapel_id']").val();
$.ajax({
url: url,
type:'POST',
data: {_token:_token, guru_id:guru_id, mapel_id:mapel_id},
success: function(data){
if ($.isEmptyObject(data.error)){
$('div.flash-message').html(data);
} else {
printMessageErrors(data.error)
}
},
});
function printMessageErrors(msg){
$(".print-error-msg").find('ul').html('');
$(".print-error-msg").css('display','block');
$.each( msg, function( key, value ) {
$(".print-error-msg").find("ul").append('<li>'+value+'</li>');
});
}
});
});
</script>
这里是 div 我放 print-error-msg
的地方。我把它放在上面 <form>
<div class="alert alert-danger print-error-msg" style="display:none">
<ul></ul>
</div>
响应在 json,所以你必须做 JSON.parse(data)
我认为您不会在 success 方法中遇到错误。也尝试使用错误函数。
$.ajax({
url: url,
type:'POST',
data: {_token:_token, guru_id:guru_id, mapel_id:mapel_id},
success: function(data){
$('div.flash-message').html(data);
},
error: function(data) {
printMessageErrors(data.error);
}
});
更换控制器
public function storeamp(Request $request){
$validator = Validator::make($request->all(), [
'guru_id' => 'required',
'mapel_id' => 'required',
]);
if ($validator->passes()) {
$ada = Mengampu::where('guru_id', $request['guru_id'])->where('mapel_id', $request['mapel_id'])->get()->count();
if($ada > 0){
Session::flash('tolong', 'Data Exist!');
return redirect()->to('guru/ampu');
} else{
return response()->json(['success'=>'Added new records.']);
}
}
$errors = $validator->errors()->all();
return view(hello.world)->with('errors', $errors);
}
查看
<div class="alert alert-danger print-error-msg" style="display: {{ count($errors) > 0 ? 'block' : 'none' }}">
<ul>
@foreach($errors as $error)
<li>{{$error['error']}}</li>
@endforeach
</ul>
</div>
我认为如果你的项目只专注于使用laravel,你不需要使用ajax来存储你的数据。laravel提供连接你的控制器的路由和你的看法.. 希望这可以帮助您解决问题