表单验证错误的响应未定义
controller方法处理请求并使用json响应将验证错误发送回客户端
public function store(Request $request)
{
$validator = $this->validate(request(), [
'title' => 'required',
'body' => 'required'
]);
if($validator->fails()) {
return response()->json(['success' => false, 'error' => $validator->errors()->toArray()]);
} else {
$report = new Report;
$report->name = 'username';
$report->phone = '012345679';
$report->title = $request->title;
$report->body = $request->body;
$result = $report->save();
return response()->json(['success' => true, 'message' => 'your report has been sent successfuly']);
}
}
如果单击按钮并且没有选中单选按钮或者主体没有填充消息正文,则必须向用户显示laravel验证错误,但它会给我未定义的消息
jQuery(document).on('ready', function() {
$('#sendrepo').click(function (e) {
e.preventDefault();
var selected = $('input[type="radio"]:checked');
var title = selected.val();
var body = $('textarea#repobdy').val();
var url = 'api/report';
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
type: "POST",
url: url,
data: { title: title, body: body },
success: function(data){
$('#repo-fel').remove();
$('.tg-formtheme h3').remove();
$('.repo-message').append('<div class="alert alert-danger"><strong>'+ data.message +'</strong></div>');
},
error: function( data){
$('.repo-message').append('<ul><li>'+ data.errors +'</li></ul>');
}
});
});
答案 0 :(得分:0)
$.ajax({
type: "POST",
url: url,
data: { title: title, body: body },
success: function(data){
if (data.success) {
$('#repo-fel').remove();
$('.tg-formtheme h3').remove();
$('.repo-message').append('<div class="alert alert-danger"><strong>'+ data.message +'</strong></div>');
}
},
error: function(data) {
var errors = data.responseJSON;
$.each(errors, function(i, v){
$('.repo-message').append('<ul><li>'+ v +'</li></ul>');
});
}
});
我希望有所帮助。
答案 1 :(得分:0)
直接没有$ validator-&gt; failed(),错误会自动响应
public function store(Request $request)
{
$validator = $this->validate(request(), [
'title' => 'required',
'body' => 'required'
]);
$report = new Report;
$report->name = 'username';
$report->phone = '012345679';
$report->title = $request->title;
$report->body = $request->body;
$result = $report->save();
return response()->json(['message' => 'your report has been sent successfuly']);
}
}
答案是必须对数据进行responseJSON并迭代它
$.ajax({
type: "POST",
url: url,
data: { title: title, body: body },
success: function(data){
if (data.success) {
$('#repo-fel').remove();
$('.tg-formtheme h3').remove();
$('.repo-message').append('<div class="alert alert-danger"><strong>'+ data.message +'</strong></div>');
}
},
error: function(data) {
var errors = data.responseJSON;
$.each(errors.errors, function(i, v){
$('.repo-message').append('<ul><li>'+ v +'</li></ul>');
});
}
});
答案 2 :(得分:0)
我现在无法测试这个,所以如果我不对,只是忽略我的答案,但在验证器上我从不用户请求作为函数,你可以尝试这样的事情,看看它是否返回正确的错误:< / p>
$validator = $this->validate($request, [
'title' => 'required',
'body' => 'required'
]);