如何在元素中使用jquery解析数组?

时间:2014-11-21 11:20:45

标签: javascript jquery arrays ajax json

我有一个关于解析数据json,ajax的问题​​。

示例:

<div class="row" id="order-list">
    1. Latte <input type="hidden" name="type[]" value="1"/>
    <div class="extra">
        +ice <input type="hidden" name="extra[]" value="2"/>
        +bigger <input type="hidden" name="exra[]" value=3"/>
    </div>
</div>

<div class="row" id="order-list">2.pizza<input type="hidden" name="type[]" value="2"/>
   <div class="extra"></div>
</div>

<div class="row" id="order-list">
   3.Cocoa <input type="hidden" name="type[]" value="3"/>
   <div class="extra">
        +ice <input type="hidden" name="extra[]" value="2"/>
   </div>
</div>

如何解析像

这样的数据
type:["1","2","3"],
extra:[["2","3"],[],["2"]]

3 个答案:

答案 0 :(得分:0)

我认为您正在寻找.serializeArray()。 http://api.jquery.com/serializearray/

答案 1 :(得分:0)

尝试这样的事情,根据你的问题,直接回答很难。有比这更简单的答案,但我无法弄清楚你究竟需要什么。尝试使用formize()。

<html lang="us">
<head>
    <script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
    <script>

        function getData()
        {
            var typeArray = new Array();
            var extArray = new Array();

            $.each($(".row"),function(key,val){
                var extra = new Array();
                typeArray.push($(val).find(".type").val());
                $.each($(val).find((".extraInput")),function(k,v){
                    extra.push( $(v).val() );
                });
                extArray.push(extra);
            })

            var retObj = {};
            retObj.type = typeArray;
            retObj.extra = extArray;
            return retObj;
        }
        $(document).ready(function(){
            alert( JSON.stringify(getData()) );
        });

    </script>
</head>
<body>

    <div class="row" id="order-list">
        1. Latte <input type="hidden" class="type" name="type[]" value="1"/>
        <div class="extra">
            +ice <input class="extraInput" type="hidden" name="extra[]" value="2"/>
            +bigger <input class="extraInput" type="hidden" name="exra[]" value="3"/>
        </div>
    </div>

    <div class="row" id="order-list">2.pizza<input class="type" type="hidden" name="type[]" value="2"/>
        <div class="extra" ></div>
    </div>

    <div class="row" id="order-list">
        3.Cocoa <input type="extraInput" class="type" name="type[]" value="3"/>
        <div class="extra">
            +ice <input class="extraInput" type="hidden" name="extra[]" value="2"/>
        </div>
    </div>

</body>

答案 2 :(得分:0)

试试这个好友:

var types=$('input[name="type[]"]').map(function(E){
    return E.value;
});

var extra=$('.row').map(function(E){
    return $(E).find('input[name="extra[]"]').map(function(E){return E.value}))
});

var data={"types":types,"extra":extra}