douhei8633 2014-10-26 22:04
浏览 87
已采纳

如何在Laravel中处理JSON返回的验证器错误

have my form submitting via AJAX and returning the errors from the validator but not sure how to access them.

So I am returning the errors like so in my controller:

$validator = Validator::make($data, $rules, $messages);

if ($validator->fails()) {
  return Response::json(array(
    'errors' => $validator->messages()->all(),
    200)
  );
}

And (using firebug) I see the JSON is:

errors: Array
  0: "This field is required"

And so on. Im looking for a way to handle all possible errors and display them to the user.

Normally I would return in my controller:

'empty-field' => true

And then in my AJAX call:

success: function(data) {
  if(data.empty-field == true) {
    // inform the user of failure
  }
}

But this will soon become tedious checking for and sending every possible error via JSON. Any way I can simply check for any errors returned and handle them? Much like the way Laravel handles errors when not using AJAX:

@if($errors->has('field'))
  <p class="input-message input-error full-width">{{ $errors->first('field') }}</p>
@endif

Thanks.

  • 写回答

1条回答 默认 最新

  • dougong7850 2014-10-26 22:12
    关注

    With JS data.empty-field is data.empty substract field, you should use data['empty-field']

    And as in Laravel templates, you can count errors : errors.length without check each one.

    success: function(data) {
      if(data.errors.length) {
        alert('There are ' + data.errors.length + ' errors');
      }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加
  • ¥15 用ns3仿真出5G核心网网元
  • ¥15 matlab答疑 关于海上风电的爬坡事件检测
  • ¥88 python部署量化回测异常问题
  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化