我希望为Ajax请求序列化一些会话内容。类似的东西:
var data = $.session("data").serialize();
这是一个标准的jQuery ajax函数,如下所示:
$.ajax({
type: "POST",
url: "script.php",
data: data,
success: function() {
...
}
});
serialize()仅对表单元素进行操作,因此我正在寻找类似的东西。处理表示SESSION数据数组的表单中的数组的东西。
是否存在或者是否必须使用foreach循环手动对POST友好字符串中的会话内容进行序列化?
答案 0 :(得分:1)
对数据使用序列化函数的主要原因是它源自多个源 - 例如包含许多输入字段的表单元素。表单上的一个序列化命令将返回所有数据。
如果您已经有一些JavaSctipt变量保存了“会话”数据,您可以通过AJAX调用将它们作为对象发送 - 如果您已将所有数据都放在一个变量中,则无需序列化数据。 / p>
如果您想传递一些服务器会话变量,那么您可能需要考虑以下方法 -
您可以使用json_encode()
保存会话变量数据并将其编码为json对象。之后,您只需将其回显到变量 -
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);