2011-03-29 56 views
1

我想serializeArray我的表单提交在jQuery中。我正在尝试获取像 String或Object这样的JSON。此外,如果有人能让我知道如何挑选那些有价值的小部件,而不是那些完美的小部件。jQuery serializeArray()JSON字符串

我很匆忙,因此没有检查语法,我为此道歉。

<html> 
    <head> 
    <script type="text/javascript"> 

    $(document.ready(function(){ 
     $("#myform").submit(function(){ 

      var mySerialObj = $("#myform").serializeArray(); 

      $.each(mySerialObj,function(indx,idxVal){ 
       //here indx is numeric and idxVal is a String like 
       // [{{"name","name"},{"value","RED"}}] 

        $.each(JSON.parse(idxVal),function(i,v){ 

          //here I am not able to get the thinggy into a 
          // JSON format something like ['name','RED'] 
         }); 
}); 

}); 


}); 


    </script> 
    </head> 
    <body> 

    <form id="myform"> 
    <div> 
    <span>What color do you prefer?</span><br /> 
    <input type="radio" name="colors" id="red" />Red<br /> 
    <input type="radio" name="colors" id="blue" />Blue<br /> 
    <input type="radio" name="colors" id="green" />Green 
    </div> 

    <div> 
    <select> 
     <option value="volvo">Volvo</option> 
     <option value="saab">Saab</option> 
     <option value="mercedes">Mercedes</option> 
     <option value="audi">Audi</option> 
    </select> 
    </div> 

    </form> 

    <button type="submit" value="submit" id="sbmt"">submit</button> 


    </body> 
    </html> 

回答

2

只需使用:

$("#myform").serialize(); 

You can try it here.

+0

Karim:感谢您的快速回复。 .serialize会给我一个像queryString的权利?像color = RED&car =“VOLVO”。那么我应该将它物化为一个JSON对象,然后循环每个对象?而且对于空val的检查将:inpu [value]检查所有类型的小部件,如单选按钮,选择框等?还是只选择文本框? – sv1 2011-03-29 02:31:10

+0

@ sv1 - 是的,你会得到一个查询字符串。我意识到我的第二个例子没有选择选项的值。我在编辑。 – karim79 2011-03-29 02:33:52

+0

行..我刚刚读了一些其他问题,选择框也被选中,但“名称”attr应该在选择 – sv1 2011-03-29 02:38:11

1

如果你不关心使用相同的名称重复的表单元素,那么你可以做:

var data = $("#myform").serializeArray(); 
var formData = _.object(_.pluck(data, 'name'), _.pluck(data, 'value')); 

使用underscore这里。

+0

当我们不需要处理文件时,这是最酷的方式。 – 2015-09-23 14:57:29