jQuery序列化并返回JSON字符串

时间:2016-03-11 04:02:50

标签: jquery json serialization

我尝试使用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>

2 个答案:

答案 0 :(得分:3)

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()

进行检查

答案 1 :(得分:2)

您可以使用map方法本身来实现此目的。

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

JSON.stringify(obj);