如何序列化JavaScript关联数组
How to serialize a JavaScript associative array?
我需要序列化一个关联的JavaScript数组。这是一个简单形式的乘积和一个数值,但在构建数组之后,数组似乎是空的。
代码在这里:http://jsbin.com/usupi6/4/edit
通常,不要将JS数组用于"关联数组"。使用普通对象:
var array_products = {};
这就是$.each
不起作用的原因:jQuery识别出您传递了数组,并且仅在数值属性上迭代。所有其他都将被忽略。
数组应该只有带数字键的条目。您可以分配字符串键,但许多函数不会将它们考虑在内。
更好:
使用jQuery时,可以使用jQuery.param
[docs]进行序列化。您只需要构建正确的输入数组:
var array_products = []; // now we need an array again
$( '.check_product:checked' ).each(function( i, obj ) {
// index and value
var num = $(obj).next().val();
var label = $(obj).next().next().attr( 'data-label' );
// build array
if( ( num > 0 ) && ( typeof num !== undefined ) ) {
array_products.push({name: label, value: num});
}
});
var serialized_products = $.param(array_products);
无需实现自己的URI编码功能。
演示
最佳:
如果给输入字段一个合适的name
:
<input name="sky_blue" class="percent_product" type="text" value="20" />
你甚至可以使用 (不过它将包括 DEMO.serialize()
[docs],并大大减少代码量(我使用下一个相邻的选择器[docs]var serialized_products = $('.check_product:checked + input').serialize();
0
值)。
您可以使用JSON库(或者本地JSON对象(如果可用))对其进行序列化。
var serialised = JSON.stringify(obj);
JSON.stringify(object)
顺便说一句,这里没有关联数组,只有对象。
使用json-js支持IE6和IE7等传统浏览器
相关文章:
- 多维关联数组的最后一个索引
- node.js/javascript/couchdb视图到关联数组似乎不起作用
- 具有关联数组数据集的D3.js表
- 后关联数组使用jquery ajax
- 返回一个关联数组,而不是mongoose中的文档数组
- 如何在 Angular JS 中从关联数组创建多个复选框
- 存储在变量中的关联数组中的访问键
- 如何在具有相同 ID 的 Javascript 中按排序函数对关联数组进行排序
- 在主要的JavaScript引擎中,在JavaScript关联数组(动态对象属性)中检索/插入的复杂性是多少
- 关联数组,并使用父数组d作为selection.data()的源数组
- 获取关联数组的标签
- JavaScript:如何在最接近值的关联数组中查找键
- 单击时显示关联数组的元素
- 关联数组 - 使用图像滑块显示键值
- Javascript从关联数组中查找最低数字(气泡排序方法)
- AngularJS过滤器不适用于我的数据:关联数组
- 获取关联数组中当前函数的键
- 如何按一个仍保持字母顺序的特性值(另一个特性值)对关联数组进行排序
- 正在检查JavaScript中是否存在关联数组
- 将数据附加到关联数组或维度数组