【问题标题】:jQuery serialize and return JSON stringjQuery 序列化并返回 JSON 字符串
【发布时间】:2016-03-11 04:02:50
【问题描述】:

我正在尝试使用 data-id 属性而不是 id 来序列化可排序列表。

这是我的代码:

var obj = $('.sortable li').map(function() {
    return 'id=' + $(this).data("id");
}).get();

JSON.stringify(obj)

返回:

["id=1", "id=2", "id=3"]

我需要的是返回:

[{"id":1},{"id":2},{"id":3}]

这里是html部分:

<ul class="sortable">
  <li data-id="1">Item 1</li>
  <li data-id="2">Item 2</li>
  <li data-id="3">Item 3</li>
  <li data-id="4">Item 4</li>
  <li data-id="5">Item 5</li>
</ul>

【问题讨论】:

    标签: jquery json serialization


    【解决方案1】:

    var id = [];
    $('.sortable li').each(function() {
      id.push({
        id: $(this).data('id')
      });
    })
    
    console.log(JSON.stringify(id))
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <ul class="sortable">
      <li data-id="1">Item 1</li>
      <li data-id="2">Item 2</li>
      <li data-id="3">Item 3</li>
      <li data-id="4">Item 4</li>
      <li data-id="5">Item 5</li>
    </ul>

    使用.each() 和.push() 进行检查

    【讨论】:

      【解决方案2】:

      您可以通过使用 map 方法本身来实现这一点。

      var obj = $('.sortable li').map(function() {
       return {
         id: $(this).data("id")
       };
      }).get();
      
      JSON.stringify(obj);
      

      【讨论】:

      • 谢谢,我更喜欢 map 方法而不是 each。
      猜你喜欢
      • 2019-09-09
      • 1970-01-01
      • 1970-01-01
      • 2012-09-07
      • 1970-01-01
      • 2014-08-27
      • 2015-10-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多