2015-07-31 4 views
0

Я пытаюсь получить сообщение об ошибке, но я не получаю свой фактический текст.Laravel 5 get JSON Response

Это мой JS.

$('form input[type=submit]').click(function(e){ 
     e.preventDefault(); 

     var form = jQuery(this).parents("form:first"); 
     var dataString = form.serialize(); 
     var formAction = form.attr('action'); 

     $.ajax({ 
      type: "POST", 
      url : formAction, 
      data : dataString, 
      success : function(data){ 
       if (data.redirect) { 
        // data.redirect contains the string URL to redirect to 
        window.location.href = data.redirect; 
       } 
      }, 
      error : function(data){ 
       $('input[name="email"]').val(''); 
       $('input[name="password"]').val(''); 
       $('.alert-danger').show(); 
       $('#message').text(data.responseText); 
      } 

     },"json"); 
    }); 

В результате я получаю только

{"email":["The email field is required."],"password":["The password field is required."]} 

Но, конечно, я хочу, чтобы принести только текст. например, «Поле электронной почты не требуется».

В моем контроллере я просто ответ JSon

return response()->json([ 
      'data' => $errors, 
     ]); 

И вот моя консоль:

enter image description here

И если я стараюсь, чтобы получить сообщение с $('#message').text(data.responseText.email); я ничего не получаю обратно ,

+0

Я попытался его с 'data.email [0 ] 'и с' data.responseText.email [0] 'все равно никакого результата. – bobbybackblech

+1

'JSON.parse (data.responseText) .email' –

ответ

1

ОК, наконец, я нашел решение. мне нужно добавить pareseJSON var errors = $.parseJSON(data.responseText);

После этого я могу получить значение с errors.email[0]

Так функция ошибки выглядит следующим образом:

error : function(data){ 
       var errors = $.parseJSON(data.responseText); 

       $('input[name="email"]').val(''); 
       $('input[name="password"]').val(''); 
       $('.alert-danger').show(); 
       $('#message').text(errors.email[0]); 
      }