【问题标题】:Unable to serialize object - jquery.param returning undefined无法序列化对象 - jquery.param 返回未定义
【发布时间】:2014-09-22 19:37:24
【问题描述】:

我希望使用 JQuery.param() 对对象数组进行编码,然后通过 ajax GET 请求发送数据。

对象是对象类型,在执行 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= 

我读过类似的帖子,其中一个对象数组的格式不正确,但是看不到这是如何格式错误的。

谁能给点建议?

【问题讨论】:

    标签: jquery json object serialization param


    【解决方案1】:

    正如jQuery.param() 的文档中所述,对象数组必须采用.serializeArray() 返回的特定格式。

    jQuery.param() 使用数组中每个对象的“名称”和“值”键构建参数字符串。您的对象只有“k”和“B”键,因此它们没有正确序列化。

    【讨论】:

    • 感谢弗兰克的评论。只是为了让我 100% 清楚,您是否建议格式实际上必须包含名为“名称”和“值”的键?您链接到的 jQuery.param() 文档页面显示了许多不符合此命名约定的示例。如有误解请见谅。
    • @Ben 是的。不符合约定的示例不是对象数组。它们是对象,其中值也是对象。如果要使用 jQuery.param() 序列化数组,则数组中的对象必须遵循该特定格式。
    • 例如可以序列化如下对象:{ 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} }
    猜你喜欢
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 2016-01-30
    • 2017-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多