代码之家  ›  专栏  ›  技术社区  ›  tirenweb

jquery:正在尝试使用SerializeArray()。

  •  2
  • tirenweb  · 技术社区  · 14 年前

    我有下面的代码。我希望它以JSON格式显示字段的值和名称,但只显示以下内容:

    [对象对象],[对象 对象]、[对象对象对象]、[对象 对象],[对象对象对象]

    <script type="text/javascript">
    
    $(document).ready(function() {
    
    
                    $('#forma').submit(function() {
    
                        alert($(this).serializeArray());
                        return false;
                     });
    
    });    
    
    </script>
    
    
    <form id="forma">
      <div><input type="text" name="a" value="1" id="a" /></div>
      <div><input type="text" name="b" value="2" id="b" /></div>
      <div><input type="hidden" name="c" value="3" id="c" /></div>
      <div>
        <textarea name="d" rows="8" cols="40">4</textarea>
      </div>
      <div><select name="e">
        <option value="5" selected="selected">5</option>
        <option value="6">6</option>
        <option value="7">7</option>
      </select></div>
      <div>
        <input type="checkbox" name="f" value="8" id="f" />
      </div>
      <div>
        <input type="submit" name="g" value="Submit" id="g" />
      </div>
    </form>
    

    当做

    贾维

    2 回复  |  直到 10 年前
        1
  •  5
  •   Nick Craver    14 年前

    那是因为 .serializeArray() 返回这样的对象数组:

    [{name: "name", value: "value"}....]
    

    要获得可以看到的字符串,请使用 .serialize() 这样地:

    alert($(this).serialize());
    

    这和打电话一样 $.param() 在数组上,如下所示:

    alert($.param($(this).serializeArray()));
    

    JSON.stringify()

        2
  •  0
  •   gordon    10 年前

    fData=$("#myForm").serializeArray(); // or $("#myDiv :input").serializeArray(); //alert(fData.length) // how many inputs got picked up var msg=""; for(var i=0;i<fData.length;i++){ var raKy=Object.keys(fData[i]); msg+="\n"+raKy[0]+":"+eval("fData[i]."+raKy[0])+" "+raKy[1]+":"+eval("fData[i]."+raKy[1]); } alert(msg);