2016-08-23 1 views
0

私はこれで2時間も苦労しましたが、問題を簡単なテストケースに絞りました。私はたくさんの研究を行い、最終的にこの質問から最初の答えを再現しようとしました:Set session var with ajaxajaxの新機能であり、ポストリクエストでセッション変数を設定できません

私は、このボタンを押してください(怠惰なHTMLを、しかし、問題がどこにあるかそれはありません):

<html> 
<head> 
... 
<script src="jquery.js"></script> 
... 
<head> 
<body> 
.... 
<?php 
    var_dump($_SESSION); 
?> 
<input type="button" class="update"> 
.... 
</body> 
</html> 

jquery.jsでこのAJAXリクエストが呼び出されます:

$.(".update").click(function() { 
    $.ajax({ 
     type: "POST", 
     url:"setSession.php", 
     data: {bar: "foobar"}, 
     success: function() { 
      console.log("Successful request sent"); 
     } 
}); 

そして最後にsetSession .phpファイル:

<?php 
    session_start(); 
    $_SESSION["foo"] = $_POST["bar"]; 
?> 

成功メッセージがコンソールに出力されるので、私はrライトファイル。セッション変数が設定されていないのはなぜですか?私はPHP 5.5.2を持っています。ご協力ありがとうございます!

+0

ここで、あなたはur jsファイルまたはスクリプトを呼び出していますか? – Phoenix

+0

@Phoenix ajaxの呼び出しはjquery.js(ちょうど編集されています)にあり、更新クラスの入力ボタンをクリックすると呼び出されます – ConorBaumgart

+0

印刷していないときに設定されていないことをどのように知っていますか? –

答えて

-1

これはあなたを助けるかもしれません。あなたのAjaxのスクリプトでsetSession.php書き込みecho $_SESSION["foo"] = $_POST["bar"];

は今開いているブラウザconsoleF12)を

$.(".update").click(function() { 
    $.ajax({ 
     type: "POST", 
     url:"setSession.php", 
     data: {bar: "foobar"}, 
     success: function(e) { 
      console.log(e); 

     } 
}); 

を行います。あなたのbutton.updateをクリックしてください。コンソールにbarと書かれているか確認してください。

0

私はこれはあなたのコードを修正するために行う、コメントに提案のように:あなたのsuccess

リロードページを:

success: function() { 
      console.log("Successful request sent"); 
      location.reload(); 
     } 

あなたがセッションを使用するすべてのページでsession_start()があることを確認してください:

session_start(); //this must be at the top, before you print anything 
+0

これは動作しません。以前にセッションを開始してからセッションを開始すると、実際にはエラーが発生します。 – ConorBaumgart

+0

本当ですか?エラーは何を言いますか? PHPページにはsession_start()が1つあり、それはページの先頭にある必要があります: '<?php session_start(); ?>「本当にしましたか?あなたの 'var_dump($ _ SESSION)'を 'echo $ _SESSION ['foo'];'に変更し、結果を見てください –

関連する問題