2016-11-23 7 views
2

私はここですべての相対的な質問を探していますが、私はまだ問題を把握できません。Ajax submitフォームPHPでシリアライズされたデータはnullです

 <p id="messages">Let's make today a great day!</p> 
<form id="myloginform" name="myloginform" action="scripts/login.php" method="post" > 
    <div class="form-group"> 
    <label for="username" class="">Enter username</label> 
    <input type="text" class="form-control input-lg c-square" id="username" name="username" placeholder="Username" required> </div> 
    <div class="form-group"> 
    <label for="password" class="">Enter pass</label> 
    <input type="password" class="form-control input-lg c-square" id="password" name="password" placeholder="Password" required> </div> 
    <div class="form-group"> 
    <div class="c-checkbox"> 
    <input type="checkbox" id="login-rememberme" class="c-check"> 
    <label for="login-rememberme" class="c-font-thin c-font-17"> 
    <span></span> 
    </div> 
    </div> 
    <div class="form-group"> 
    <button type="submit" class="btn c-theme-btn btn-md c-btn-uppercase c-btn-bold c-btn-square c-btn-login" id="check">login</button> 

    </div> 

    </form> 

私はPHPファイルにフォームを渡すために、AJAXを使用しています::

 <script> 
    $(document).ready(function(){ 

      $('form#myloginform').submit(function(e) { 

       var my_data = $('form#myloginform').serialize(); 

       $.ajax({ 
        type  : 'POST', 
        url   : 'scripts/login.php', 
        cache  : false, 
        data  : my_data, 
        contentType : false, 
        processData : false, 
        dataType: 'json', 

        success: function(response) { 
         //TARGET THE MESSAGES DIV IN THE MODAL 
         if(response.type == 'success') { 
          $('#messages').addClass('alert alert-success').text(response.message); 
         } else { 
          $('#messages').addClass('alert alert-danger').text(response.message); 
         } 
        } 
       }); 
       e.preventDefault(); 
      }); 
     }); 
     </script> 

login.phpファイルは非常に単純であると返し、私はシンプルなモーダルフォームを使用しています

json $出力応答

<?php 
    $username = $_POST['username']; 
    $password = $_POST['password']; 

    if($username == "Test"){ 
    $success = true; 
    } 

if($success == true) { 
    $output = json_encode(array('type'=>'success', 'message' => $username)); 
} else { 
    $output = json_encode(array('type'=>'error', 'message' => $username)); 
} 

die($output); 
?> 

すべての場合の$出力はnullを返します。私は火かき棒でチェックし、すべてがOK、エラーはありません、POST完璧な私はPHPで変数を取得することはできません。何か案は ???私のアプローチに何か間違っているのですか、何とかPHPファイルのデータを逆シリアル化する必要がありますか????

+3

'contentType'と' processData'オプションを削除すると、jQueryがシリアライズされたフォームをサーバーに送信される前にwww-urlencodedデータに解析するすべての機能をオフにしただけです。 – adeneo

+0

パーフェクト、ありがとう! – Dions

答えて

0

dieを使用しないでください。 echoまたはprintを使用します。
また、contentTypeをtrueに設定します。

関連する問題