控制器没有显示失败消息

时间:2017-02-24 01:18:58

标签: json ajax laravel

当我要在我的项目中注册时,我需要验证用户的昵称:

我的控制器

$inputData = Input::get('nickname');
        parse_str($inputData); 
        $informacion = array('nickname' => $inputData);
        $regla = array('nickname'=>'required|unique:usuarios|alpha_num|min:6|max:15');
    if($request->ajax()){
        $usuarios = Usuarios::Usuarios();

        $validar = Validator::make($informacion,$regla);
        if($validar->fails()){
            return Response()->json(array(
            'fail' => true,
            'errors' => $validar->getMessageBag()->toArray()));
        }
        else{
           return Response()->json(array('success' => true, "message" => "Nombre de Usuario Disponible"));
        }
    }

我的剧本

$( "#validar" ).click(function( event ) {
  var dato = $('#nickname').val();
  var route = $('#form-sign-up').attr('action');
  var tipo = $('#form-sign-up').attr('method');
  var token = $('#form-sign-up #token').val();
  $.ajax({
      url: route,
      headers: {'X-CSRF-TOKEN': token},
      type: tipo,
      dataType: 'json',
      data:{nickname: dato},})


        .fail(function(data){
          $('#nickname-msj').html(data.errors);
          $('#nickname-msj').fadeIn();
        })
        .done(function(data) {
            $('#nickname-msj').html(data.message);
            $('#nickname-msj').fadeIn();
        });
});

.done工作,但是。不会,我需要向我的用户显示这些信息,因为他们可以知道问题是什么,如果有人可以帮助我会很棒。

我正在使用Laravel 5.2

谢谢。

1 个答案:

答案 0 :(得分:0)

使用与200不同的代码触发Ajax的失败功能。所以你可以返回

if($validar->fails()) { 
    return response()->json($arrayHere, 400); //HTTP 400 error for bad request
}

所以,基本上在400函数内部的数组之后添加json()。如果您未指定代码,则默认为200

也许还会改变你的ajax请求?或者不是

$.ajax({

        url: route,
        headers: {'X-CSRF-TOKEN': token},
        type: tipo,
        dataType: 'json',
        data:{
             nickname: dato
        },
        success: function (data) {
            console.log(data);
        },
        error: function (data) {
            console.log('Error:', data);
        }
    });