2009-10-15 112 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