繁体   English   中英

将表单数据序列化为JSON时如何保留值类型

[英]How to preserve value type when serializing form data to JSON

我想将所有表单值都转换为JSON,以便可以在AJAX POST中将JSON作为正文发送。 我在网上找到了这个现有的解决方案:

function getFormData($form){
    var unindexed_array = $form.serializeArray();
    var indexed_array = {};

    $.map(unindexed_array, function(n, i){
        indexed_array[n['name']] = n['value'];
    });

    return indexed_array;
}

用法:

var $form = $("#form_data");
var data = getFormData($form);

但是,这种方法( source )将所有值转换为字符串类型,它不会将数字保留为整数。 我无法提出一种保留值类型的方法。 做这个的最好方式是什么?

HTML:

<form id="myform">
    <div>
      <label>Number: </label>
      <input id="mynum" type="number" name="mynum"/>
    </div>
    <div>
      <label>name: </label>
      <input id="myname" type="text" name="myname"/>
    </div>
</form>

这是因为所有input值默认都是string类型。 如果要将类型转换为number类型,则必须手动执行。

一种方法是通过遍历JSON并使用手动函数将string值解析回number类型。

若要创建手动功能: http : //pietschsoft.com/post/2008/01/14/JavaScript-intTryParse-等效

以下代码显示即使input类型为number ,但该类型实际上为string

 let type; function checkFormData(){ type = document.getElementById('mynum').value; console.log('The type of input#mynum is: ' +typeof type); return false; } 
 <form id="myform" onsubmit=" return checkFormData()"> <div> <label>Number: </label> <input id="mynum" type="number" name="mynum"/> </div> <div> <label>name: </label> <input id="myname" type="text" name="myname"/> </div> <input type="submit" value="Submit"/> </form> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM