Javascript 如何将HTML表单(JSON格式)中的数据分配给变量?

Javascript 如何将HTML表单(JSON格式)中的数据分配给变量?,javascript,html,json,Javascript,Html,Json,在我的abc.html中,我有以下代码将表单数据(目前为硬编码)转换为JSON格式: <body> <form enctype='application/json' method="POST" name="myForm"> <p><label>Company:</label> <input name='Company' value='TESTCOMPANY'> </p>

在我的abc.html中,我有以下代码将表单数据(目前为硬编码)转换为JSON格式:

    <body>
    <form enctype='application/json' method="POST" name="myForm">

    <p><label>Company:</label>
    <input name='Company' value='TESTCOMPANY'> </p>

    <p><label>User Id:</label>
    <input name='User' value='TESTUSER'></p>

    <p><label>Division:</label>
    <input type="text" name='parameterMap[p1]' value='12345' ></p>

    <p><label>From:</label>
    <input type="text" name='parameterMap[p2]' value='20-MAR-2016'></p>

    <p><label>To:</label>
    <input type="text" name='parameterMap[p3]' value='22-MAR-2016'></p>

    <input value="Submit" type="submit" onclick="submitform()">
    </form>
    </body>
{"Company":"TESTCOMPANY","User":"TESTUSER","parameterMap":{"p1":"12345","p2":"20-MAR-2016","p3":"22-MAR-2016"}}*
现在我需要将此数据形成的Json字符串分配给变量'FormData',这样FormData就像:

{"Company":"TESTCOMPANY","User":"TESTUSER","parameterMap":{"p1":"12345","p2":"20-MAR-2016","p3":"22-MAR-2016"}}*
FormData = '{"Company":"TESTCOMPANY","User":"TESTUSER","parameterMap":{"p1":"12345","p2":"20-MAR-2016","p3":"22-MAR-2016"}}'
如何分配数据?

{"Company":"TESTCOMPANY","User":"TESTUSER","parameterMap":{"p1":"12345","p2":"20-MAR-2016","p3":"22-MAR-2016"}}*
abc.html中的进一步代码将以以下方式使用此变量FormData:

{"Company":"TESTCOMPANY","User":"TESTUSER","parameterMap":{"p1":"12345","p2":"20-MAR-2016","p3":"22-MAR-2016"}}*
function sendAjax() {

    $.ajax({
        url : "myurl",
        type : 'POST',
        dataType : 'json',
        data : FormData,
        contentType : 'application/json',
        mimeType : 'application/json',
        success : function(data) {
            alert(data.uuid);
        },
        error : function(data, status, er) {
            alert("error: " + data + " status: " + status + " er:" + er);
        }
    });
    }

我不喜欢jQuery,但是:

{"Company":"TESTCOMPANY","User":"TESTUSER","parameterMap":{"p1":"12345","p2":"20-MAR-2016","p3":"22-MAR-2016"}}*
var$inputs=$('form[name=“myForm”]”)。查找('input');
var res={};
Array.prototype.forEach.call($inputs,function($item,index){
res[$item.getAttribute('name')]=$item.value;
});
var FormData=JSON.stringify(res);
警报(FormData)

公司:

{"Company":"TESTCOMPANY","User":"TESTUSER","parameterMap":{"p1":"12345","p2":"20-MAR-2016","p3":"22-MAR-2016"}}*
用户Id:

{"Company":"TESTCOMPANY","User":"TESTUSER","parameterMap":{"p1":"12345","p2":"20-MAR-2016","p3":"22-MAR-2016"}}*
分部:

{"Company":"TESTCOMPANY","User":"TESTUSER","parameterMap":{"p1":"12345","p2":"20-MAR-2016","p3":"22-MAR-2016"}}*
发件人:

{"Company":"TESTCOMPANY","User":"TESTUSER","parameterMap":{"p1":"12345","p2":"20-MAR-2016","p3":"22-MAR-2016"}}*
致:

{"Company":"TESTCOMPANY","User":"TESTUSER","parameterMap":{"p1":"12345","p2":"20-MAR-2016","p3":"22-MAR-2016"}}*

如果您不在后端处理此问题,您可以在变量中检索Javascript中的数据,然后使用
JSON.stringify()
将其作为JSON应用到数据中

{"Company":"TESTCOMPANY","User":"TESTUSER","parameterMap":{"p1":"12345","p2":"20-MAR-2016","p3":"22-MAR-2016"}}*
这是一个工作片段:

{"Company":"TESTCOMPANY","User":"TESTUSER","parameterMap":{"p1":"12345","p2":"20-MAR-2016","p3":"22-MAR-2016"}}*
函数submitform(){
var FormData={
公司:myForm.Company.value,
用户:myForm.User.value,
参数映射:{
p1:myForm.p1.value,
p2:myForm.p2.value,
p3:myForm.p3.value
}
};
console.log(FormData);
$.ajax({
url:“我的url”,
键入:“POST”,
数据类型:“json”,
数据:JSON.stringify(FormData),
contentType:'应用程序/json',
mimeType:'application/json',
成功:功能(数据){
警报(data.uuid);
},
错误:功能(数据、状态、er){
警报(“错误:+数据+”状态:+状态+”er:+er);
}
});
}


公司:

{"Company":"TESTCOMPANY","User":"TESTUSER","parameterMap":{"p1":"12345","p2":"20-MAR-2016","p3":"22-MAR-2016"}}*
用户Id:

{"Company":"TESTCOMPANY","User":"TESTUSER","parameterMap":{"p1":"12345","p2":"20-MAR-2016","p3":"22-MAR-2016"}}*
分部:

{"Company":"TESTCOMPANY","User":"TESTUSER","parameterMap":{"p1":"12345","p2":"20-MAR-2016","p3":"22-MAR-2016"}}*
发件人:

{"Company":"TESTCOMPANY","User":"TESTUSER","parameterMap":{"p1":"12345","p2":"20-MAR-2016","p3":"22-MAR-2016"}}*
致:

{"Company":"TESTCOMPANY","User":"TESTUSER","parameterMap":{"p1":"12345","p2":"20-MAR-2016","p3":"22-MAR-2016"}}*

使用提供的HTML结构,您可以使用以下方法将数据转换为格式:

{"Company":"TESTCOMPANY","User":"TESTUSER","parameterMap":{"p1":"12345","p2":"20-MAR-2016","p3":"22-MAR-2016"}}*
函数submitform(){
var form=document.querySelector('form');
var result={};
var input=form.getElementsByTagName('input');
对于(变量i=0;i


公司:

{"Company":"TESTCOMPANY","User":"TESTUSER","parameterMap":{"p1":"12345","p2":"20-MAR-2016","p3":"22-MAR-2016"}}*
用户Id:

{"Company":"TESTCOMPANY","User":"TESTUSER","parameterMap":{"p1":"12345","p2":"20-MAR-2016","p3":"22-MAR-2016"}}*
分部:

{"Company":"TESTCOMPANY","User":"TESTUSER","parameterMap":{"p1":"12345","p2":"20-MAR-2016","p3":"22-MAR-2016"}}*
发件人:

{"Company":"TESTCOMPANY","User":"TESTUSER","parameterMap":{"p1":"12345","p2":"20-MAR-2016","p3":"22-MAR-2016"}}*
致:

{"Company":"TESTCOMPANY","User":"TESTUSER","parameterMap":{"p1":"12345","p2":"20-MAR-2016","p3":"22-MAR-2016"}}*
JSON输出(单击提交按钮后):

{"Company":"TESTCOMPANY","User":"TESTUSER","parameterMap":{"p1":"12345","p2":"20-MAR-2016","p3":"22-MAR-2016"}}*
还可以检查控制台以查看JSON对象(单击提交按钮后)

{"Company":"TESTCOMPANY","User":"TESTUSER","parameterMap":{"p1":"12345","p2":"20-MAR-2016","p3":"22-MAR-2016"}}*

将对其进行URL编码。问题是如何对其进行JSON编码。重新编辑:这将对URL编码字符串进行JSON编码。它不会对问题具体涉及的数据结构进行JSON编码,而是POST请求。它不会被URL编码。也可以始终将URL解码到后端。“URL编码”并不意味着“放入查询字符串”,而是意味着“以与查询字符串相同的方式编码”。URL编码的数据字符串可以很容易地出现在帖子正文中。我确实误读了代码,我认为您使用的是
序列化
,而不是
序列化数组
serializeArray
不会给出请求的数据结构。我添加了OP说他们期望的数据,并对它们进行了比较--这不符合问题要求。不要覆盖(或使用变量,其中第一个字母是非构造函数的大写字母)您的问题,目前的情况非常广泛。答案需要包括从DOM获取数据,将其转换为您描述的数据结构(这意味着对名称中带有
[]
的字段进行特殊处理),并将其编码为JSON。如果你做更多的研究,把范围缩小到一个更具体的问题上,这将是一个更好的问题。你应该这样做。如果没有for属性或表单控件,标签是无用的。这是行不通的。数据包括多个名称相似的字段,这些字段需要表示为子对象。我很确定在该代码中,
item
是一个DOM对象,而不是jQuery对象,因此对其调用
val()
会引发异常。@Quentin是的,thnx,我更正了它。备注:这是因为我不喜欢jquery)))为什么要重命名表单中的所有字段,而不是使用它们开头的值?我认为只使用
p1
而不是
parameterMap[p1]
更合适。