使用ajax将数据发送到laravel的控制器

时间:2016-12-14 12:06:10

标签: php ajax laravel frameworks

我只是想用ajax向我的laravel的控制器发送一个POST请求..它完全是第一次工作,例如。如果我填写正确的用户信息然后它重定向到我定义的路线,但如果我填写错误的信息,然后我得到我定义的错误信息,现在主要部分是填写错误的信息和消息(错误的用户名和密码)出现。然后我重试正确的信息但没有任何反应我不知道为什么..请帮助我,我的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="example@gmail.com" 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>

1 个答案:

答案 0 :(得分: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',
];

您可以通过在login.blade.php

中创建javascript的新功能来获取新生成的令牌
<script>
    function newToken(){
        return '{{csrf_token()}}';
    }
</script>

在你的jquery文件中调用这个函数,用你的ajax请求附加新生成的标记。