【问题标题】:Unable to append data to string using serializeArray() and array.push()无法使用 serializeArray() 和 array.push() 将数据附加到字符串
【发布时间】:2013-02-09 01:51:04
【问题描述】:

按照this one 之类的答案后,我正在尝试使用以下方法将数据附加到字符串:

<input type='checkbox' name='a' />A
<input type='checkbox' name='b' checked='checked'/>B
<input type='checkbox' name='c' />C

var attr_str = $('input').serializeArray();
attr_str.push({q:'hello',p:'world'});

但它返回[object Object],[object Object]。我错过了什么?

JSFIDDLE

【问题讨论】:

    标签: jquery arrays string serialization


    【解决方案1】:

    我不确定您要完成什么,但serializeArray() 只会包含经过检查的输入。你可以阅读更多关于它的信息here

    但是您的数组正按应有的方式作为对象返回。要查看此对象的 JSON 布局,您可以尝试JSON.stringify(attr_str)

    var attr_str = $('input').serializeArray();
    
    attr_str.push({q:'hello',p:'world'});
    
    $('body').append('<br><br>string='+JSON.stringify(attr_str));
    

    这将表明您正在将一个对象附加到您的attr_str 数组中,但仅包含输入“b”,因为它是唯一被检查的。 string=[{"name":"b","value":"on"}{"q":"hello","p":"world"}] 要访问该对象,您只需使用attr_str[0],然后对该对象的属性使用attr_str[0].name。这将打印b

    【讨论】:

      【解决方案2】:

      serializeArray 返回一个对象数组,每个对象包含属性namevalue

      [{"name": "x", "value": "y"}, {"name": "a", "value": "b"}, ...]
      

      这就是它打印[Object, Object]的原因。

      如果需要,您可以使用JSON.stringify(attr_str) 打印字符串化的值。但是 JSON.stringify 在旧浏览器中不被原生支持,因此您可能必须包含像 JOSN2 这样的兼容性库

      演示:Fiddle.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-05
        • 2018-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-18
        相关资源
        最近更新 更多