2009-10-15 40 views
8

幫助!

我很難摔跤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; 
     } 
    } 

?> 

我有兩個問題 -

1 )如何從serialize()函數中獲取複選框值?我認爲還有更多的事情需要處理,比如value []來獲取數組,然後我想將每個數組存儲爲一個單獨的會話變量 - 除非我可以將數組存儲爲$ _SESSION變量? 2)我甚至在弄亂之前,我添加了該行$ _SESSION ['saved'] =「true」;到php腳本,然後我回顯我的畫廊頁面上的$ _SESSION鍵和值,以查看AJAX請求是否工作正常。不是。當我返回頁面時,$ _SESSION ['saved']不會被添加到回顯$ _SESSION變量的列表中。

任何幫助將不勝感激!

回答

6

您需要在form-data-holder.php文件中調用session_start()。

每次進行ajax調用時,都會從服務器請求一個新的/新的頁面,該頁面不知道原始頁面中設置的任何變量。

+0

對不起,會議已經開始了,因爲用戶必須登錄才能看到圖庫。 – rhodesjason 2009-10-15 15:01:52

+0

是的,但是當你進行ajax調用時,它會加載一個全新的php頁面,所以你需要在那裏調用它。 – jeroen 2009-10-15 15:07:09

+0

嗯好吧我添加了<?php session_start(); ?>到form-data-holder.php文件的頂部 - 不變。我是否必須以某種方式將該會話與其他會話相關聯? – rhodesjason 2009-10-15 15:10:44