javascript - 如何将标准 HTML 表单转换为包含所有数据的 JSON 表示形式?

标签 javascript jquery

我有一个简单的 HTML 表单:

<form id="formid1" action="#" method="post">
    <table>
        <tr><td> First name: </td><td><input type="text" name="firstname" id="firstname"/>  </td></tr>
        <tr><td>  Last name: </td><td><input type="text" name="lastname" id="lastname"/>  </td></tr>
        <tr><td> Address:  </td><td> <input type="text" name="address" id="address"/> </td></tr>
        <tr><td> Zip: </td><td> <input type="text" name="zip" id="zip"/> </td></tr>
        <tr><td> Sex:  </td><td> <input type="radio" name="sex" value="male" /> Male<br />
            <input type="radio" name="sex" value="female" /> Female<br /></td></tr>

        <tr><td>  </td><td>  <input type="submit" value="Submit" /></td></tr>

    </table>
</form>

我需要获取表单元素的 JSON 表示形式,包括 ID、值、类型、表单操作、表单 ID 等。

我尝试使用以下代码,但没有得到我想要的东西:

<script>
$(document).ready(function(){

    var encoded = $.toJSON($('#formid1')); 

    $("#formid1").submit(function() {
  $.colorbox({html:'<p>Form Converted to JSON Data: <br /><br /><br /><br /><br /></p>'+ encoded  });
      return false;
    });

    });
</script>

我得到:

{"length":1,"0":{"firstname":{},"lastname":{},"address":{},"zip":{},"sex":{"0":{},"1":{}},"6":{}},"context":{"jQuery16108216209608688556":1},"selector":"#formid1"}

关闭

最佳答案

试试这个:

$('#formid1').serializeArray().reduce(function(obj, v) { obj[v.name] = v.value; return obj; }, { });

关于javascript - 如何将标准 HTML 表单转换为包含所有数据的 JSON 表示形式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7181276/

相关文章:

javascript - setState 具有数组属性的嵌套对象的属性的正确方法

javascript - $.when.apply.done 不执行异步函数

javascript - 如何在单击时淡出 1 张图片并自动淡入彼此靠近的 4 张图片?

javascript - 将表单数据提交到 2 个位置

javascript - 如何使用 Jquery 在视频末尾显示海报图像?

javascript - 对 Instagram Web 的 JSONP 调用返回未捕获的语法错误 : Unexpected token :

javascript - Angular UI 选择不显示

javascript - 播放 x 到 y 秒的音频

javascript - Javascript函数的顺序

javascript - 对 PHP 和 MySQL 中的特定评论进行评级