无法在ajax请求中读取responseJSON值

时间:2017-09-17 06:42:20

标签: php ajax laravel

这是视图picture

{{ Form::open([
       'url' => '/contacts/create',
       'files' => true
])}}
      <div class="row">
          <div class="collapse" id="collapseExample">
              <div class="col-md-9">
                 {{ Form::label('group', 'group name')}}
                 {{ Form::text('group', null, [
                        'placeholder' => 'Enter group name here',
                        'class' => 'form-control'
                 ])}}
              </div>
              <div class="col-md-3">
                  <button id="add-new-btn" class="btn btn-success"><i class="pe-7s-add-user"></i> Add</button>
              </div>
         </div>
      </div>
{{ Form::close() }}

在我的视图中,我有脚本

 $("#add-new-btn").click(function(e) {
    e.preventDefault();
    e.stopImmediatePropagation();
    var newGroup = $('#group');
    $.ajax({
        url: "/groups/autocomplete",
        method: "post",
        data: {
            name: $("#group").val(),
            _token: $("input[name=_token]").val()
        },
        success: function(response) {
            console.log(response);
        },
        error: function(xhr) {
            var errors = xhr.responseJSON;
            var error = errors.name[0];
            if(error) {
                newGroup.addClass('has-error');
                var inputGroup = newGroup.closest('.col-md-9');
                inputGroup.next('text-danger').remove();

                inputGroup
                    .find('input')
                    .after('<p class="text-danger">' + error + '</p>');
            }
        }
    });
});

并且在GroupsController的store方法中我有一个简单的Validator,可以返回这两个值: 1.名称字段是必需的 这个名字已经被采取

public function store(Request $request)
{
    $this->validate($request, [
        'name' => 'required|unique:groups'
    ]);
}

现在的问题是: 每次我尝试提交表单时,浏览器都会返回此错误&#34; errors.name is undefined&#34;在控制台中。

问题在哪里? error message

1 个答案:

答案 0 :(得分:0)

我在访问对象的属性时遇到了错误, jsonData.errors

 var data = xhr.responseText;
 var jsonData = JSON.parse(data);
 var msg = jsonData.errors.name[0];
 console.log(msg);

var jsonData = xhr.responseJSON;
var msg = jsonData.errors.name[0];
console.log(msg);