2015-08-12 2 views
0

Я пытаюсь отправить форму входа, используя ajax в laravel, но кажется, что часть ajax не работает. Ниже мой login.blade.phpLaravel 5.1 ajax не работает?

<!DOCTYPE html> 
<html lang="en"> 
<head> 
<meta charset="UTF-8"> 

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"> 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.min.css"> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> 

</head> 
<body> 


<div class="secure">Secure Login form</div> 
{!! Form::open(array('url'=>'account/login','method'=>'POST', 'id'=>'myform')) !!} 
<div class="control-group"> 
    <div class="controls"> 
    {!! Form::text('email','',array('id'=>'','class'=>'form-control span6','placeholder' => 'Email')) !!} 
    </div> 
</div> 
<div class="control-group"> 
    <div class="controls"> 
    {!! Form::password('password',array('class'=>'form-control span6', 'placeholder' => 'Please Enter your Password')) !!} 
    </div> 
</div> 
{!! Form::button('Login', array('class'=>'send-btn')) !!} 
{!! Form::close() !!} 



<script type="text/javascript"> 
$(document).ready(function(){ 
    $('.send-btn').click(function(){ 
$val=$('input[name=email]').val(); 
$token=$('input[name=_token]').val(); 
//alert($val+$token); 
    $.ajax({ 
     url: '/account/login', 
     type: "post", 

     data: {'email':$('input[name=email]').val(), '_token': $('input[name=_token]').val()}, 
     success: function(data){ 
     alert(data); 
     } 
    }); 


    }); 
}); 
</script> 

route.php

Route::get('account/login', function() { 
    return View::make('login'); 
}); 
Route::post('account/login', '[email protected]'); 

контроллер

public function login() { 

    if(Request::ajax()) { 
     $data = Input::all(); 
     print_r($data); 

     die; 
    } 

    } 

Я пытался предупредить входные значения в АЯКС части до успеха, он будет печатать выход, но предупреждение о неудаче не работает.

+0

Ваш запрос Ajax отправляется с X-Requeted- С заголовком? Если это не так, тогда Request :: ajax() завершится ошибкой –

+0

@MarounBaydoun. Я последовал за http://tutsnare.com/post-data-using-ajax-in-laravel-5/ этим руководством. Я новичок в laravel – vision

+1

Проверьте реакцию сервера в консоли вашего браузера, чтобы узнать, какая ошибка происходит. –

ответ

0

попробовать это один:

public function login() { 

if(Request::ajax()) { 
    $data = Request::all(); 
    return $data; 

     } 
} 
+0

извините, но Laravel 5 удален Input :: all(); – Kavin

+0

@jigs Virani, не работает. – vision

+0

@tester http://kopy.io/jJV12 – Kavin

1

Хотя регистрации пользователей через AJAX является небезопасным, это может быть сделано ни-менее:

{!! Form::open(array('url'=>'account/login','method'=>'POST', 'id'=>'myform')) !!} 
    /** 
    * Your Form 
    */ 
    ... 
    {!! Form::submit('Login', array('class'=>'send-btn')) !!} 
{!! Form::close() !!} 

Поле CSRF будет автоматически генерироваться для вас , Часть JavaScript:

<script> 
    (function($) { 
     $('#myform').submit(function(e) { 
      $.ajax({ 
       type: 'POST', 
       url: 'account/login', 
       data: $('#myform').serialize(), 
       success: function(data) { 
        alert(data); 
       } 
      }); 

      e.preventDefault(); 
     });    
    })(window.jQuery); 
</script> 

Это должно сделать трюк для части HTML и JavaScript. В Laravel 5.1 мы можем использовать инъекционный метод, чтобы получить входные поля (Request Object) следующим образом:

<?php 

namespace Blah\Blah; 

use Illuminate\Http\Request; 

class AccountController 
{ 
    ... 

    public function login(Request $request) 
    { 
     if ($request->ajax()) { 
      // Its AJAX!! 
      return $request->all(); // All the Input fields 
     } 
    } 
} 

Обратите внимание на изменения, которые я сделал в свой код. Проверьте, работает ли этот метод или нет.

Cheers!

0

Требуется токен. Попробуйте добавить:

заголовки: { 'X-CSRF-ЗНАК': маркер}

в вашем АЯКС запросу:

$.ajax({ 
    url: route, 
    headers: {'X-CSRF-TOKEN': token}, 
    type: 'POST', 
    dataType: 'json', 
    data: {data : data} 
}); 
Смежные вопросы