2016-12-14 5 views
0

Я просто пытаюсь отправить запрос POST моему контроллеру laravel с помощью ajax .. он отлично работает в первый раз, например. если я заполню правильную информацию пользователя, тогда она перенаправляется на мой определенный маршрут, но если я заполняю неверную информацию, тогда я получаю сообщение об ошибке, которое я определяю, теперь основная часть после заполнения неправильной информации и сообщения появляется (неправильное имя пользователя и пароль). then я повторить с правильной информацией, но ничего не происходит, я не знаю почему .. пожалуйста, помогите мне ,, мой Аякса кодотправить данные контроллеру laravel с помощью ajax

$(document).ready(function(){ 
    function login(){ 
     var CSRF_TOKEN = $('meta[name="csrf-token"]').attr('content'); 
     var link = 'http://localhost/tute/ajax_laravel/public/'; 
     var values = {email : $("#email").val() , password : $("#password").val() , _token: CSRF_TOKEN}; 

     $.ajaxSetup({ 
      header:$('meta[name="_token"]').attr('content') 
     }) 
     $.ajax({ 
      url  : link+'login', 
      type : 'POST', 
      data : values, 
      success : function(data){ 
       if (data == 'false'){ 
        $('.error').show(); 
       } 
      } 
     }); 
    } 
    $('.btn-success').click(function(e){ 
     e.preventDefault(); 
     login(); 
    }); 

});

Мой HTML код

  <div class="hpanel"> 
      <div class="panel-body"> 
       <div class="form-group"> 
        <input type="hidden" name="_token" value="{{csrf_token()}}"> 
        <label class="control-label" for="email">Email</label> 
        <input type="text" placeholder="[email protected]" title="Please enter you email" 
        required="" value="" name="email" id="email" class="form-control"> 
        <span class="help-block small">Your unique Email to app</span> 
       </div> 
       <div class="form-group"> 
        <label class="control-label" for="password">Password</label> 
        <input type="password" title="Please enter your password" placeholder="******" 
        required="" value="" name="password" id="password" class="form-control"> 
        <span class="help-block small">Your strong password</span> 
       </div> 
       <div class="error" style="display:none"> 
        <p style="color:red">Wrong Email or Password</p> 
       </div> 
       <button class="btn btn-success btn-block">Login</button> 
       <a class="btn btn-default btn-block" href="#">Register</a> 
      </div> 
     </div> 
+0

Добавить соответствующий hml-код, пожалуйста –

+0

Не знаете, почему вы поместили функцию login() в document.ready()? – Dev

+0

это просто для демонстрационной цели .. забудьте об этом @DEV. :) – sandeep

ответ

0

Я думаю, что есть проблема с CSRF лексемы. Если вы действительно хотите сделать вход с ajax вы можете отключить CSRF проверку на комментарий Illuminate\Foundation\Http\Middleware\VerifyCsrfToken от Illuminate\Foundation\Http\Middleware\VerifyCsrfToken

protected $middleware = [ 
    'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode', 
    'Illuminate\Cookie\Middleware\EncryptCookies', 
    'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse', 
    'Illuminate\Session\Middleware\StartSession', 
    'Illuminate\View\Middleware\ShareErrorsFromSession', 
    'Illuminate\Foundation\Http\Middleware\VerifyCsrfToken', 
]; 

Либо вы можете получить новый генерироваться маркер путем создания новой функции JavaScript в вашем login.blade.php

<script> 
    function newToken(){ 
     return '{{csrf_token()}}'; 
    } 
</script> 

вызовите эту функцию в файле jquery, чтобы прикрепить новый сгенерированный токен с помощью вашего запроса ajax.

+0

Спасибо, сэр @rahul sharma, это сделано для меня – sandeep

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