【问题标题】:jQuery serializeArray() JSON StringjQuery serializeArray() JSON 字符串
【发布时间】:2011-03-29 02:24:36
【问题描述】:

我正在尝试在 jQuery 中序列化我的表单提交。我正在尝试获得类似的 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>

【问题讨论】:

    标签: jquery string json serializearray


    【解决方案1】:

    只需使用:

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

    You can try it here.

    【讨论】:

    • 卡里姆:感谢您的快速回复。 .serialize 会给我一个 queryString 对吗?比如颜色=RED&car="VOLVO"。那么我应该将它对象化为一个 JSON 对象,然后循环遍历每个对象吗?并且对于空值的检查将 :inpu[value] 检查所有类型的小部件,如单选按钮、选择框等?还是只选择文本框?
    • @sv1 - 是的,你会得到一个查询字符串。我意识到我的第二个示例没有获取所选选项的值。我正在编辑。
    • OK..我刚才在其他一些问题中读到,选择框也会被选中,但“名称”属性应该在选择中声明
    • @sv1 - 是的,这是真的,我想知道为什么我可以让这个例子工作!
    • 查看这个问题,了解如何将表单序列化为 json。 stackoverflow.com/questions/1184624/…
    【解决方案2】:

    如果您不关心具有相同名称的重复表单元素,那么您可以这样做:

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

    在这里使用underscore

    【讨论】:

      猜你喜欢
      • 2011-07-10
      • 2013-10-22
      • 2011-04-05
      • 1970-01-01
      • 2020-02-01
      • 1970-01-01
      • 2012-12-18
      • 2012-07-07
      • 2012-08-22
      相关资源
      最近更新 更多