【问题标题】:Return json of validations with laravel 5.4使用 laravel 5.4 返回验证的 json
【发布时间】: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 的对象无法转换为字符串”
  • 如果你在谷歌上搜索到这一点,你就更进一步了:stackoverflow.com/questions/37260036/…
  • 是的,那是因为您的 PHP 脚本崩溃了。由于您在上面发布的错误。由于数据未验证,因此不会返回该错误,这是一个实际的 PHP 错误。这意味着脚本在您修复代码之前无法运行。请参阅我上面的评论。谷歌如何修复您的“类 Illuminate\Validation\Validator 的对象无法转换为字符串”错误,或点击我评论中的链接到关于它的 SO-post。

标签: php ajax laravel validation laravel-5.4


【解决方案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()]);
      }
      

      【讨论】:

        猜你喜欢
        • 2017-10-19
        • 1970-01-01
        • 2015-12-09
        • 2019-07-11
        • 1970-01-01
        • 2017-12-17
        • 1970-01-01
        • 1970-01-01
        • 2015-08-16
        相关资源
        最近更新 更多