首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在JQuery中序列化JSON对象

问如何在JQuery中序列化JSON对象
EN

Stack Overflow用户
提问于 2012-04-13 05:29:14
回答 2查看 4.6K关注 0票数 1

我无法序列化JSON对象"data",如下所示。

代码语言:javascript
复制
<script type="text/javascript">

var myObj = {'first_name':{'answers':{'0':'John'}}};
var postdata = {'data':myObj};
$.post("get_note.php", postdata, function(data){
    $('#note').text(data);
});

</script>

以下是文件get_note.php中的代码:

代码语言:javascript
复制
<?php

print_r($_POST['data']);
?>

这会导致将以下内容打印到#note元素。

代码语言:javascript
复制
Array ( [first_name] => ) 

数组似乎是空的。我期望PHP文件中有一个多维数组。为什么它是空的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-13 05:32:30

在客户端,您可以通过对纯javascript执行JSON.stringify()来进行序列化。在服务器端,您需要对字符串执行php json_decode()。

所以在客户机上:

代码语言:javascript
复制
var postdata = {'data':JSON.stringify(myObj)};

在服务器上:

代码语言:javascript
复制
$myObj = json_decode(htmlspecialchars_decode($_POST['data']),true);

参考文献:

js JSON.stringify():http://www.json.org/js.html

php json_decode():http://php.net/manual/en/function.json-decode.php

票数 0
EN

Stack Overflow用户

发布于 2012-04-13 05:38:18

您可以尝试发送一个序列化的JSON数组,并在服务器端对其进行解密。

要序列化JSON数组,请使用以下命令:

代码语言:javascript
复制
var my_json_array = { index: 11 };
JSON.stringify(my_json_array);

然后在服务器端,你可以像这样把它转换(解码)成PHP数组:

代码语言:javascript
复制
$json = $_POST["my_json_array"];
$my_array = json_decode($json);

所以你的代码会变成这样:

代码语言:javascript
复制
<script type="text/javascript">

var data = {'first_name':{'answers':{'0':'John'}}};
var postdata = {'data':JSON.stringify(data)};
$.post("get_note.php", postdata, function(data){
    $('#note').text(data);
});

</script>

和

代码语言:javascript
复制
<?php

print_r(json_decode($_POST['data']));
?>

如何说,这个解决方案是好的新浏览器(具有本地JSON支持)对于旧的,这个解决方案将不起作用。

有关浏览器中JSON支持的更多信息,可以在此处阅读:

http://en.wikipedia.org/wiki/JSON#Native_encoding_and_decoding_in_browsers

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10132152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档