如何将数据存储为JSON,如数据库, 这样当用户注册信息时应该存储在一个变量?
示例:
我的HTML表单由输入文本字段firstname,lastname组成。单击表单的注册按钮应将firstname和lastname的值存储在变量中。
我该怎么做:
var txt = '{"employees":[' +
'{"firstName":"John","lastName":"Doe" },' +
'{"firstName":"Anna","lastName":"Smith" },' +
'{"firstName":"Peter","lastName":"Jones" }]}';
答案 0 :(得分:2)
听起来您想要从 HTML 中的值转到 JSON 字符串。假设<form>
看起来像这样
<form>
<input type="text" name="nm1[]"/><input type="text" name="nm2[]"/>
<input type="text" name="nm1[]"/><input type="text" name="nm2[]"/>
</form>
您可以使用getElementsByName
两次,构建对象和JSON.stringify
var nm1 = document.getElementsByName('nm1[]'),
nm2 = document.getElementsByName('nm2[]'),
i, o = {
employees: []
};
for (i = 0; i < nm1.length; ++i) {
if (nm1[i].value && nm2[i].value)
o.employees.push({
firstName: nm1[i].value,
lastName: nm2[i].value
});
}
JSON.stringify(o);
DEMO(打开控制台)
答案 1 :(得分:1)
您可以通过将数据附加到employees
数组(如
dataobj.employees.push({"firstName":$('input[name=firstn]').val(),
"lastName":$('input[name=lastn]').val() });
当然,这要求首先将JSON解析为dataobj。如果要通过GET
发送,则必须再次序列化。但它可以POST
直接作为数据对象!
你当然也可以从一个空数组开始,初始化dataobj,如
var dataobj={ employee: [] };
在上述uptdating命令生效之前。
很晚编辑...
如果应该有多个firstname / lastname输入字段,那么以下将执行“更好”的工作(因为它将查看所有字段并仅收集至少有一个名称设置的字段) ):
var dataobj={employees:[]};
function shw(){
$('#out').text(JSON.stringify(dataobj).replace(/{/g,'\n{'));}
$(function(){
$('#clr').click(function(){dataobj.employees=[];shw()});
$('#go').click(function(){
var ln=$('input[name=lastn]').toArray(); // ln: JS-Array of DOM elements
$('input[name=firstn]').each(function(i,fn){ // for each fn DOM-element ...
var f=fn.value,l=ln[i].value; // get values as strings
if (f+l>'') dataobj.employees.push({firstName:f,lastName:l}); // push name object
});shw();})
shw();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" name="firstn" value="John"><input type="text" name="lastn" value="Doe"><br>
<input type="text" name="firstn" value="Anna"><input type="text" name="lastn" value="Smith"><br>
<input type="text" name="firstn" value="Peter"><input type="text" name="lastn" value="Jones">
<input type="button" id="go" value="append names">
<input type="button" id="clr" value="clear">
<pre id="out"></pre>
答案 2 :(得分:0)
您可以使用数组的push
方法来推送JSON数据。这显示在此处 - appending-to-a-json-object。在需要提交数据之前(比如process.php
),stringify它。
答案 3 :(得分:0)
轻松使用Jquery
var jsonArray;
jsonArray.push($("#firstname").val();
jsonArray.push($("#lastname").val();
var myJsonString = JSON.stringify(jsonArray);