2016-12-08 26 views
1

Ajax jQueryでポップアップフォームのログインを作成しようとしていますが、データの送信に失敗しています。私は見つけることができますが、何も変わらない、インターネット上の多くの方法を持っています。私を見て助けてください。ありがとう: は、これが私のフォームです:Ajax jQueryでデータを送信できない理由

$("#loginbutton").click(function(event) { 
    event.preventDefault(); 
    var username = $("#username").val(); 
    var password = $("#password").val(); 
    var data ={"email":username, "password":password}; 
    alert(data.email); 
    // alert(data.password); 
    $.ajax(
     { 
      url: '{{url('/')}}/loginHandling', 
      type: 'POST', 
      data: {'email': "[email protected]", 'password':"tuyen12345"}, 
      dataType: 'json', 
      success: function(data) 
      { 
       alert(data); 
       alert("done"); 
      } 
     } 
    ) 
    .fail(function(data) { 
     alert("fail"); 
    }); 
}); 

そして、これはコントローラです::

<form id="loginform" name="loginform" method="POST"> 
    {{ csrf_field() }} 
    <div class='modal-body-left' > 
     <div class="form-group"> 
      <input type="text" id="username" name="username" placeholder="Tên đăng nhập" value="" class="form-control login-field"> 
      <i class="fa fa-user login-field-icon"></i> 
     </div> 
     <div class="form-group"> 
      <input type="password" id="password" name="password" placeholder="Mật khẩu" value="" class="form-control login-field"> 
      <i class="fa fa-lock login-field-icon"></i> 
     </div> 
     <div class="checkbox"> 
      <label> 
       <input type="checkbox" style="margin-top: -8px"> Nhớ mật khẩu 
      </label> 
      <a href="#" style="float: right;">Quên mật khẩu?</a> 
     </div> 
     <button class="btn btn-success modal-login-btn" id="loginbutton" name="loginbutton" style="background-color: #47a49a; background: #fec10f;" type="submit">Đăng nhập</button> 
    </div> 
</form> 

これは私のjsある

public function loginHandling() { 

    $email = Input::get('email'); 
    $password = Input::get('password'); 
    $check $this->pages->checkLogin($email, $password); 
    echo "alert(In loginHandling)"; 
    if ($check) { 
     $name = $this->pages->getNameFromMail($email); 
     Session::put('logined', true); 
     Session::put('email', $email); 
     Session::put('name', $name); 

     die json_encode(array("success"=>"true")); 
    } else { 
     die json_encode(array("success"=>"false")); 
    } 

} 

私のように、私はLaravelフレームワークに取り組んでいますURLは次のように定義されます。

Route::post('/loginHandling',['as'=>'loginHandling','uses'=>'[email protected]']); 

お返事ありがとうございます

+1

これは具体的にどのように失敗しますか?これをデバッグすると、実際の問題はいつ起こりますか?それが起こるとき、関連する価値は何ですか? – David

+0

申し訳ありませんが、分かりません。私がPostmanでメッセージを送信して問題を見つけようとすると、私はこの 'TokenMismatchException in VerifyCsrfToken.php line 68 'を取得しますが、それは何か分かりません。私はコントローラ上でいくつかのテストコードを試してみたので、コントローラにデータを送ることはできないと思うが、動作しなかった。 –

+0

** 1。** '{{csrf_field()}}'は ''であるため、$ .ajaxメソッドのデータに '_token'を渡す必要があります。 ** 2。**あなたはjquery '$ .ajaxSetup({ ヘッダー:{ 'X-CSRF-TOKEN':$( 'meta [name =" csrf-token "]')のリクエストヘッダーを設定できます。attr 'content') } }) 'app.blade.phpファイル –

答えて

2

Laravelがリクエストを処理するには、CSRFトークンを渡す必要があります。これを行うには、いくつかの方法があります - これを試してみてください:

フォーム:

<meta name="_token" content="{{ csrf_token() }}" />    
<form id="loginform" name="loginform" method="POST"> 
    <div class='modal-body-left' > 
     <div class="form-group"> 
      <input type="text" id="username" name="username" placeholder="Tên đăng nhập" value="" class="form-control login-field"> 
      <i class="fa fa-user login-field-icon"></i> 
     </div> 
     <div class="form-group"> 
      <input type="password" id="password" name="password" placeholder="Mật khẩu" value="" class="form-control login-field"> 
      <i class="fa fa-lock login-field-icon"></i> 
     </div> 
     <div class="checkbox"> 
      <label> 
       <input type="checkbox" style="margin-top: -8px"> Nhớ mật khẩu 
      </label> 
      <a href="#" style="float: right;">Quên mật khẩu?</a> 
     </div> 
     <button class="btn btn-success modal-login-btn" id="loginbutton" name="loginbutton" style="background-color: #47a49a; background: #fec10f;" type="submit">Đăng nhập</button> 
    </div> 
</form> 

Javascriptを:

$("#loginbutton").click(function(event) { 
    $.ajaxSetup({ 
     headers: { 
      'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content') 
     } 
    }); 
    event.preventDefault(); 
    var username = $("#username").val(); 
    var password = $("#password").val(); 
    $.ajax(
     { 
      url: '{{url('/')}}/loginHandling', 
      type: 'POST', 
      data: {'email': username, 'password': password}, 
      dataType: 'json', 
      success: function(data) 
      { 
       alert(data); 
       alert("done"); 
      } 
     } 
    ) 
    .fail(function(data) { 
     alert("fail"); 
    }); 
}); 

あなたは今$request->all()であなたのコントローラで送信されたデータにアクセスすることができるはずです。

+0

あなたに感謝していますが、それでも失敗します。これにはどんな理由がありますか? –

+0

ええ、申し訳ありません、私はヘッダーの名前を残しました。 '{'X-CSRF-TOKEN':$( 'meta [name =" csrf-token "]')。attr( 'content')}'ヘッダーにする必要があります。私は自分の答えを更新しました。それはトリックを行う必要があります。 – jackel414

+0

それはまだ動作しません、私はそれ以上のものがあると思います、私はこのフォームと機能に関連するかどうかわかりません。私は今非常に混乱しています。私は初心者で、これに対する解決策を見つけることはできません。 :( –

関連する問題