如何在 JQuery 中序列化 JSON 对象
How to serialize a JSON object in JQuery
我无法序列化JSON对象"data",如下所示。
<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 中的代码:
<?php
print_r($_POST['data']);
?>
这将导致将以下内容打印到 #note 元素。
Array ( [first_name] => )
数组显示为空。 我期待 PHP 文件中有一个多维数组。 为什么它是空的?
在客户端上,您可以通过对纯 javascript 执行JSON.stringify()
来进行序列化。在服务器上,您需要对字符串执行 php json_decode()
。
所以在客户端上:
var postdata = {'data':JSON.stringify(myObj)};
在服务器上:
$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
您可以尝试发送序列化的 JSON 数组并在服务器端对其进行解密。
要序列化 JSON 数组,请使用以下命令:
var my_json_array = { index: 11 };
JSON.stringify(my_json_array);
然后在服务器端,您可以像这样将其转换(解码)为 PHP 数组:
$json = $_POST["my_json_array"];
$my_array = json_decode($json);
所以你的代码会变成这样:
<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>
和
<?php
print_r(json_decode($_POST['data']));
?>
怎么说,这个解决方案适用于新浏览器(具有本机 JSON 支持),对于旧浏览器,这个解决方案将不起作用。
有关浏览器中 JSON 支持的更多信息,您可以在此处阅读:
http://en.wikipedia.org/wiki/JSON#Native_encoding_and_decoding_in_browsers
相关文章:
- 如何在C#中反序列化json对象
- ASP.NET MVC-自动取消序列化JSON Fetch POST
- 如何在 Express/Node.js 中反序列化 JSON 数据
- 无法在 Javascript 中反序列化 JSON 对象
- C# 序列化 JSON 对象中的 JSON 对象
- 从 JavaScript 中的序列化 JSON 对象中提取变量
- 如何在 JQuery 中序列化 JSON 对象
- 为什么我的序列化 JSON 在到达 java 脚本函数参数后被取消序列化
- c#等效于序列化json
- 将函数对象引用作为序列化json传递
- c# Web服务到javascript反序列化JSON对象
- 在反序列化JSON对象时,是否有方法将属性名称转换为小写?
- 在Ext JS存储中反序列化json数据时区分模型类型
- . asmx怪从log4javascript日志反序列化JSON blob
- 如何序列化Json javascript
- 使用JavaScriptSerializer反序列化JSON对象
- 美元http.get获取反序列化JSON,但不能将其赋值给array
- c#反序列化JSON html字符串
- Jquery在ajax调用中没有正确序列化json
- 打字稿:如何使用私有变量反序列化 JSON 对象