2016-11-22 2 views
0

Я хочу сделать, если какие-либо значения ничего, показать окно с сообщением об ошибке. if($validator->passes()) работает успешно, но у меня есть проблемы в if its failed. console.log(res) ничего не приносит. Как я могу решить эту проблему? я попробовал $errors = $validator->errors();$errors = json_decode($errors);laravel ajax validation Как сделать, если это не удалось?

Js

$.ajax({ 
     url: url, 
     type: 'POST', 
     data: $writeForm.serialize(), 
     error: function(res){ 
      if (!res.status) { 

       console.log(res.message); 
       var error = $.parseJSON(res.message); 
        $('div.visitor-form > div.alert').html(error); 

      } 
     } 

    }); 

контроллер

$validator = validator::make($data = Input::all(), mypage::$rules); 
if($validator->fails()) { 

     $response = array(); 
     $response['status'] = false; 

     $errors = $validator->getMessageBag()->toArray(); 
     $response['message'] = $errors; 

     return response()->json($response); 

    } 
+0

김정명: вы хотите поместить проверку на стороне клиента или серверную сторону? –

ответ

1
$response['errors'] = $validator->errors()->all(); 

return response()->json($response, 400); 

Браузер должен знать статус ошибки для того, чтобы вызвать ваш метод error в этой функции AJAX. См https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_Client_Error

$.ajax({ 
     url: url, 
     type: 'POST', 
     data: $writeForm.serialize(), 
     error: function(res){ //by using this method, you're assuming that all the logic here is for error handling. 
       console.log(res.status, res.errors); 
     } 

    }); 
+0

Это приводит к следующим ошибкам: jquery.min.js: 4 POST http: // localhost: 8000/comment 400 (Bad Request) send @ jquery.min.js: 4ajax @ jquery.min.js: 4 (анонимная функция) @ mypage.js: 106dispatch @ jquery.min.js: 3r.handle @ jquery.min.js: 3 mypage.js: 112 undefined 400 – jungmyung

+0

и mypage.js: 112 is console.log (res.errors, res. положение дел); – jungmyung

+0

@ 김정명 это нормально, вы должны получить «400». Теперь вам нужно выяснить, как сделать HTML для вашего предупреждения. Например, вы должны сделать 'console.log (res)' и посмотреть, что возвращается из этого ответа. – Frondor

0

В контроллере, вернуть любой HTTP-код error состояния, чтобы вызвать метод ошибки обратного вызова Ajax.

В вашем случае 400 (неверный запрос) подходит для ошибок проверки.

return Response::json($response, 400); 
+1

спасибо за комментарий! – jungmyung

+1

Вы приветствуете :-) –

Смежные вопросы