无法序列化对象 - jquery.param返回未定义

3
我希望使用JQuery.param()对一个对象数组进行编码,然后通过ajax GET请求发送数据。
该对象的类型为object,在执行console.log(JSON.stringify(obj))时,输出如下:
[{"k":48.88975598812273,"B":2.362097778320276},{"k":48.88975598812273,"B":2.217902221679651},{"k":48.85023620829814,"B":2.217902221679651},{"k":48.85023620829814,"B":2.362097778320276},{"k":48.88975598812273,"B":2.362097778320276}]

使用JQuery.param(obj)时,它将每个值返回为undefined:
undefined=&undefined=&undefined=&undefined=&undefined= 

我看过类似的帖子,其中一个对象数组格式不正确,但是我无法看出哪里有问题。

有人能给些建议吗?

1个回答

5
正如jQuery.param()文档所述,对象数组必须符合.serializeArray()返回的特定格式。
jQuery.param()通过使用数组中每个Object的"name"和"value"键来构建参数字符串。由于您的对象只有"k"和"B"键,因此它们无法正确序列化。请注意,保留了html标签。

感谢您的评论,Frank。只是为了让我百分之百清楚,您是在建议格式实际上必须包括名为“name”和“value”的键吗?您链接的jQuery.param()文档页面显示了许多不符合此命名约定的示例。如果我误解了,请原谅。 - Ben
@Ben 是的。不符合约定的示例不是对象数组。它们是值也是对象的对象。如果您想使用jQuery.param()序列化数组,则数组中的对象必须遵循特定的格式。 - frankjwu
例如,您可以序列化以下对象: { 1: {"k":48.88975598812273,"B":2.362097778320276}, 2: {"k":48.88975598812273,"B":2.217902221679651}, 3:{"k":48.85023620829814,"B":2.217902221679651}, 4:{"k":48.85023620829814,"B":2.362097778320276}, 5:{"k":48.88975598812273,"B":2.362097778320276} } - frankjwu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接