使用 laravel 5.4 返回验证的 json
Posted
技术标签:
【中文标题】使用 laravel 5.4 返回验证的 json【英文标题】:Return json of validations with laravel 5.4 【发布时间】:2018-06-13 02:14:17 【问题描述】:我有以下请求 ajax:
$("#btnSave").click(function()
var Url = 'http://localhost/Projetos-Laravel/Sibcomweb/public/panel/client/save';
var Dados = $('#FormClient').serialize();
$.ajax(
type:'POST',
url:Url,
dataType: 'JSON',
data: Dados,
success:function(data)
if($.isEmptyObject(data.error))
alert(data.msg);
else
alert('have errors');
,
error:function(e)
alert('Error !');
log.console(e);
,
);
);
错误日志.console(e)
POST http://localhost/Projetos-Laravel/Sibcomweb/public/panel/client/save 500 (Internal Server Error)
send @ jquery.js:9566
ajax @ jquery.js:9173
(anonymous) @ create:431
dispatch @ jquery.js:5206
elemData.handle @ jquery.js:5014
create:446 Uncaught ReferenceError: log is not defined
at Object.error (create:446)
at fire (jquery.js:3317)
at Object.fireWith [as rejectWith] (jquery.js:3447)
at done (jquery.js:9274)
at XMLHttpRequest.<anonymous> (jquery.js:9514)
请求 ajax 转到控制器但在验证方法中有一些错误...
我认为问题出在验证器方法中,我做错了什么吗?
public function store(Request $request)
$dataForm = $request->all();
$rules =[
'name'=>'required|min:3|max:100',
'number'=>'required|numeric',
];
$valida = validator($dataForm, rules);
if($valida->fails())
return $valida;
else
return 'Ok';
我如何以 json 类型返回 var valida?
【问题讨论】:
在浏览器检查器中切换到网络面板,选择 ajax 调用的条目,然后查看 laravel 返回的错误。或者,查看 laravel.log 或您的网络服务器日志文件。 php 因某种原因崩溃,您需要准确找出原因。这样做的唯一方法是读取它返回的错误。 然而,另一部分是:未捕获的引用错误:未定义日志。正确的语法是 console.log(e);,而不是 log.console(e); 在导航的网络预览中显示此“类 Illuminate\Validation\Validator 的对象无法转换为字符串” 如果你在谷歌上搜索到这一点,你就更进一步了:***.com/questions/37260036/… 是的,那是因为您的 PHP 脚本崩溃了。由于您在上面发布的错误。由于数据未验证,因此不会返回该错误,这是一个实际的 PHP 错误。这意味着脚本在您修复代码之前无法运行。请参阅我上面的评论。谷歌如何修复您的“类 Illuminate\Validation\Validator 的对象无法转换为字符串”错误,或点击我评论中的链接到关于它的 SO-post。 【参考方案1】:查看响应错误:
将您的回调函数更改为:
error: function(e)
var errors = e.responseJSON;
alert(errors);
// Render the errors with js ...
【讨论】:
【参考方案2】:日志不是函数。将log.console
更改为console.log
【讨论】:
【参考方案3】:有两个问题。 首先是:log.console(e),但是是 console.log(e)。 第二个问题是在controller中,return not的方法是正确的。
这样就对了:
public function store(Request $request)
$dataForm = $request->all();
$rules =[
'name'=>'required|min:3|max:100',
'number'=>'required|numeric',
];
$valida = validator($dataForm, $rules);
return response()->json(['error'=>$valida->errors()->all()]);
【讨论】:
以上是关于使用 laravel 5.4 返回验证的 json的主要内容,如果未能解决你的问题,请参考以下文章