2017-01-31 9 views
2

3ページありAjaxリクエスト後にセッションデータが失われています。私はbutton1をクリックしないと以下のような単純なフォームがあり、フォームを送信しても問題ありません。ページ3のセッション値ですが、ボタン1をクリックしてAjaxをリクエストすると、ページ3にセッションデータがありません。あなたはjqueryのを通してそれをやっているときajaxリクエスト後のセッションデータがありません

page1.phpコード

<?php 
    session_start(); 
    if(isset($_POST['firstname'])){ 
     $_SESSION['firstname']= $_POST['firstname']; 
    } 
    if(isset($_POST['lastname'])){ 
     $_SESSION['lastname']= $_POST['lastname']; 
    } 
?> 
<form id="form1" action="page3.php"> 
    First name:<br> 
    <input type="text" id="firstname" name="firstname" value=""> 
    <br> 
    Last name:<br> 
    <input type="text" id="lastname" name="lastname" value=""> 
    <br><br> 
    <input type="submit" value="Submit"> 
    <br><br> 
    <input type="button" id="button1" value="save"> 
</form> 

<script type="text/javascript"> 
$(document).ready(function(){ 

    $('#button1').on("click",function(){ 

     jQuery.ajax({ 
       type: "POST", 
       data: $('#form1').serialize(), 
       url:page2.php, 
       dataType : 'json', 
       encode : true, 
       success: function(data){ 
       console.log(data); 
       } 
     }); 
    }); 
}); 
</script> 

page2.phpコード

<?php 
    session_start(); 
    $firstname=$_POST['firstname']; 
    $lastname=$_POST['lastname']; 

    //some code here 
?> 

page3.phpコード

<?php 
    session_start(); 
    $firstname=$_SESSION['firstname']; 
    $lastname=$_SESSION['lastname']; 

    //some code here 
?> 
+0

であるあなたが持っていますこれをpage2.phpに書き込むには:-'if(isset($ _ POST ['firstname'])){ $ firstname = $ _ POST ['firstname']; $ _SESSION ['firstname'] = $ firstname; } if(isset($ _ POST ['lastname'])){ $ lastname = $ _ POST ['lastname']; $ _SESSION ['lastname'] = $ lastname; } ' –

答えて

2

おかげで問題があり、 page1は更新されておらず、その理由はSESSIONですページの上にコードを保存することは実行されておらず、他のページで値を取得していません。

ソリューション: - アヤックスの場合

以下のようなpage2.php書き込み(page1から削除)上: - POSTすべてが上にコードので、うまく働いたフォームを使用する場合には

if(isset($_POST['firstname'])){ 
    $firstname=$_POST['firstname']; 
    $_SESSION['firstname']=$firstname; 
} if(isset($_POST['lastname'])){ 
    $lastname=$_POST['lastname']; 
    $_SESSION['lastname']= $lastname; 
} 

page1が実行されます。

しかし、あなたはjqueryの経由行っているときに、この場合の正しい事もpage1の上にコードを削除し、page3.phpの上に置く(私は上記したものと同じコード)

+1

ありがとう、このソリューションは私の問題を修正 – role1

関連する問題