2009-10-15 18 views
8

Help!

AJAXが私のために働くことに苦労しています。私は、各画像の下にチェックボックスがあるページ区切りのギャラリーを持っており、ユーザーがページ間を移動する場合、チェックボックスの値をセッション変数に格納する必要があるため、いつでもフォームを送信するときにすべてのページにわたってすべてのチェック値が含まれます。

私はこのjQueryのコードを使用しています:

$(document).ready(function() { 
    $(".gal-nav").click(function() { 
     $.post("form-data-holder.php", $("#gallery-form").serialize()); 
    }); 
}); 

を、フォーム・データholder.phpファイルがこれを言う:

<?php 

    $_SESSION['saved'] = "true"; 

    foreach ($_POST as $key=>$value) { 
     if ($key !== "submit") { 
      $value = htmlentities(stripslashes(strip_tags($value))); 
      $_SESSION[$key] = $value; 
     } 
    } 

?> 

私は2つの問題がある -

1 )serialize()関数からチェックボックスの値を取得するにはどうすればよいですか?その配列を取得するためにはvalue []のようなものが必要ですが、$ _SESSION変数として配列を格納することができない限り、別々のセッション変数として格納すると思いますか?

2)私はそれを何とかする前に、$ _SESSION ['saved'] = "true"という行を追加しました。私は、AJAXリクエストが機能しているかどうかを確認するために、$ _SESSIONのキーと値をギャラリーページに表示します。そうではありません。その$ _SESSION ['saved']は、私がページに戻るときにエコーされた$ _SESSION変数のリストに追加されません。

ご協力いただければ幸いです!

答えて

6

form-data-holder.phpファイルでsession_start()を呼び出す必要があります。

あなたはajax呼び出しを行うたびに、元のページに設定されている変数を認識していない新しい/新鮮なページをサーバーから要求しています。

+0

申し訳ありませんが、セッションは、ギャラリーをまったく表示するためにはログインする必要があるという事実によって既に開始されています。 – rhodesjason

+0

はい、しかし、あなたはajax呼び出しを行うと、新しく始まる新しいPHPページを読み込んでいますので、そこでも呼び出す必要があります。 – jeroen

+0

うーん、私は<?php session_start();を追加しました。 ?>をform-data-holder.phpファイルの先頭に追加します。変更はありません。そのセッションを何らかの形で他のセッションに関連付ける必要がありますか? – rhodesjason

関連する問題