序列化Ajax的会话内容

时间:2012-07-28 20:22:56

标签: jquery ajax session serialization

我希望为Ajax请求序列化一些会话内容。类似的东西:

var data = $.session("data").serialize();

这是一个标准的jQuery ajax函数,如下所示:

$.ajax({
   type: "POST",
   url: "script.php",
   data: data,
   success: function() {
     ...
   }
});

serialize()仅对表单元素进行操作,因此我正在寻找类似的东西。处理表示SESSION数据数组的表单中的数组的东西。

是否存在或者是否必须使用foreach循环手动对POST友好字符串中的会话内容进行序列化?

2 个答案:

答案 0 :(得分:1)

对数据使用序列化函数的主要原因是它源自多个源 - 例如包含许多输入字段的表单元素。表单上的一个序列化命令将返回所有数据。

如果您已经有一些JavaSctipt变量保存了“会话”数据,您可以通过AJAX调用将它们作为对象发送 - 如果您已将所有数据都放在一个变量中,则无需序列化数据。 / p>

如果您想传递一些服务器会话变量,那么您可能需要考虑以下方法 - 您可以使用json_encode()保存会话变量数据并将其编码为json对象。之后,您只需将其回显到变量 -

即可将其传递给JavaScript
var sess_data = '<?php echo json_encode($_SESSION); ?>' ;

然后你可以通过AJAX调用传递变量 - 无需序列化数据。

$.ajax({
   type: "POST",
   url: "script.php",
   data: sess_data,
   success: function() {
     ...
   }
});

答案 1 :(得分:0)

如果它是一个数组或一个对象或其他什么,我有点不清楚,但你可以使用$.param来做这件事。

来自文档:

  

创建适合的数组或对象的序列化表示   用于URL查询字符串或Ajax请求。

-

var data = $.session("data");

$.ajax({
   type: "POST",
   url: "script.php",
   data: {data: $.param(data)},
   success: function() {
     ...
   }
});

并在PHP中捕获它

parse_str($_POST['data'], $myVariable);