使用jQuery从无序列表中输出JSON对象

时间:2010-08-17 12:06:44

标签: jquery json

我正在研究这个jsFiddle:

http://jsfiddle.net/8vWXZ/10/

我想将表单上的列表项及其相关ID的顺序作为JSON对象发布到服务器,但不知道从哪里开始。

3 个答案:

答案 0 :(得分:2)

这可能是一种较短的方法 - 我将文本包裹在一个范围内,并为其添加了一类“上下文”。然后我可以更容易地使用选择器将数据提取到JSON化的对象中。

以下是我对HTML所做的更改(只是其中一个LI元素的示例):

<li>
    <span class="up">Up1</span>
    <span class="down">Down1</span>
    <span class="content">Item 1</span>
</li>

不确定你是否能够将它包裹在一个范围内,但我想我会尝试。

我的更新小提琴在这里:http://jsfiddle.net/Tn97g/

这是我的按钮点击事件处理程序:

$("#submit").click(function() {
    var items=$("#reOrder li");
    var tosubmit=[];
    $(items).each(function(index, e){
        var nextItem = { "id": e.id, "val" : $(e).find(".content").text() };
        tosubmit.push(nextItem );
    });
    alert(JSON.stringify(tosubmit));
});

它更简洁,但我不确定你想要做什么。我希望这有帮助!!

答案 1 :(得分:1)

因为您要向字符串添加文字引号。而不是"indexPos": '"' + nodeIndex + '"'只使用"indexPos": nodeIndex

答案 2 :(得分:0)

在这里完成了这个(某种程度的):

http://jsfiddle.net/8vWXZ/15/

除非您在警报中看到它输出反斜杠,否则我不确定原因:

[{"prodId":"item1","indexPos":"\"1\""},{"prodId":"item2","indexPos":"\"2\""},{"prodId":"item3","indexPos":"\"3\""},{"prodId":"item4","indexPos":"\"4\""}]