2

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

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

它适用于像这样的标准jQuery ajax函数:

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

serialize()只对表单元素进行操作,所以我正在寻找类似的东西。以表示 SESSION 数据数组的形式处理数组的东西。

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

4

2 回答 2

1

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

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

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

var sess_data = '<?php echo json_encode($_SESSION); ?>' ;

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

$.ajax({
   type: "POST",
   url: "script.php",
   data: sess_data,
   success: function() {
     ...
   }
});
于 2012-07-28T20:28:04.163 回答
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);
于 2012-07-28T20:25:50.327 回答