Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript-HTML格式转换为JSON(空值)和格式_Javascript_Jquery_Html_Json - Fatal编程技术网

JavaScript-HTML格式转换为JSON(空值)和格式

JavaScript-HTML格式转换为JSON(空值)和格式,javascript,jquery,html,json,Javascript,Jquery,Html,Json,我知道也有类似的问题,但我找不到我问题的答案 我有一个简单的表单和一个按钮 <form id="myForm" class="vertically-centered"> <p> Name </p> <input type="text" name="name" id="formName"> <p> Address</p> <input type="text" name="addre

我知道也有类似的问题,但我找不到我问题的答案

我有一个简单的表单和一个按钮

<form id="myForm" class="vertically-centered">
    <p> Name </p>
    <input type="text"  name="name" id="formName"> 

    <p> Address</p> 
    <input type="text" name="address" id="formAddress">
    <input type="button" value="Submit" id="submitFormBtn">
</form>
为了实现这一点,我使用了
serializeArray()

但是当我打印
formData
时,我得到的是空值和这种格式

[{"name":"name","value":""},{"name":"address","value":""}]
你知道哪里不对吗


提前谢谢你

您需要使用每对键/值构建一个新对象:

$(“#myForm”).submit(函数(e){
e、 预防默认值();
var res={};
$.each($('#myForm').serializeArray(),function(){
res[this.name]=this.value;
});
警报(JSON.stringify(res));
});

姓名

地址



您需要使用每对键/值构建一个新对象:

$(“#myForm”).submit(函数(e){
e、 预防默认值();
var res={};
$.each($('#myForm').serializeArray(),function(){
res[this.name]=this.value;
});
警报(JSON.stringify(res));
});

姓名

地址



AcleanJavaScript解决方案:

设置窗体的长度

var form = document.querySelector("#myForm"); // document.getElementById("myForm") is also working
var formLength = form.length;
  • 表单[0]第一个标记
  • 表[1]第二个标签
  • 表单[0]。名称

  • 表单[0]。值
设置一个对象来存储这些日期:

var obj = {};
单击按钮后,浏览表单并将日期存储在对象中:

for(var i = 0; i < formLength; i += 1) {
    obj[form[i].name] = form[i].value;
}

A干净的JavaScript解决方案:

设置窗体的长度

var form = document.querySelector("#myForm"); // document.getElementById("myForm") is also working
var formLength = form.length;
  • 表单[0]第一个标记
  • 表[1]第二个标签
  • 表单[0]。名称

  • 表单[0]。值
设置一个对象来存储这些日期:

var obj = {};
单击按钮后,浏览表单并将日期存储在对象中:

for(var i = 0; i < formLength; i += 1) {
    obj[form[i].name] = form[i].value;
}


为什么要将其字符串化为JSON,没有很好的理由这么做?序列化表单会给您一个类似的对象,因为这是发送表单时所期望的,应该有空值。请发布您的代码
serializeArray
应该按照您想要的方式工作,因此您一定是使用错误。如果用户填写了表单输入,那么值不应该是空的。@Barmar-它们不会是空的,但是OP写下他想要的
[{“name”:name,“address”:address}]
没有值,这可能是因为这样更容易访问JSON,但它根本不应该是JSON,它应该以表单/www编码等形式发送。为什么要将其字符串化为JSON,没有很好的理由这样做?序列化表单会给您一个类似的对象,因为这是发送表单时所期望的,应该有空值。请发布您的代码
serializeArray
应该按照您想要的方式工作,因此您一定是使用错误。如果用户填写了表单输入,那么值不应该是空的。@Barmar-它们不会是空的,但是OP写下他想要的
[{“name”:name,“address”:address}]
没有值,这可能是因为这样更容易访问JSON,但它根本不应该是JSON,应该以/www编码的形式发送。我在代码中测试了您的代码片段,但仍然得到空值
{“name”:“address”:“}
。问题可能与
serializeArray()
无关,@adeneo的解决方案实际上是实现这一点的标准方法。(为什么要费心把它做成这种格式?)。PS:你的问题很奇怪,你有没有办法创建一个JS提琴来重现这个问题?我刚做了这个提琴,但我无法重现错误。。。这里的字段是正确的。@让我们滚动字段是正确的吗?我没有从你的JS提琴中得到任何结果,因为你的输入没有
name
属性,只有一个ID(固定在这里:)。我忘记保存提琴了!我有
name
属性,我得到了输出。我不知道为什么我不能在本地做同样的事情。顺便说一句,我正在本地主机上运行node.js服务器。也许是因为这个?我在代码中测试了您的代码片段,但仍然得到空值
{“name”:“,”address:“}
。问题可能与
serializeArray()
无关,@adeneo的解决方案实际上是实现这一点的标准方法。(为什么要费心把它做成这种格式?)。PS:你的问题很奇怪,你有没有办法创建一个JS提琴来重现这个问题?我刚做了这个提琴,但我无法重现错误。。。这里的字段是正确的。@让我们滚动字段是正确的吗?我没有从你的JS提琴中得到任何结果,因为你的输入没有
name
属性,只有一个ID(固定在这里:)。我忘记保存提琴了!我有
name
属性,我得到了输出。我不知道为什么我不能在本地做同样的事情。顺便说一句,我正在本地主机上运行node.js服务器。也许是因为这个?谢谢!所有的解决方案似乎都很好,但我一直从表单中获取空输入值。我刚刚发现错误与
serializeArray()
无关。无论如何,我喜欢这个解决方案!它很简单,可读性强,输出结果正是我想要的。再次感谢!谢谢所有的解决方案似乎都很好,但我一直从表单中获取空输入值。我刚刚发现错误与
serializeArray()
无关。无论如何,我喜欢这个解决方案!它很简单,可读性强,输出结果正是我想要的。再次感谢!