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');
      }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料