首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用AJAX/jQuery发布JSON格式的表单数据,而不是使用键值对的JSON格式?

如何使用AJAX/jQuery发布JSON格式的表单数据,而不是使用键值对的JSON格式?
EN

Stack Overflow用户
提问于 2019-04-28 06:42:00
回答 1查看 176关注 0票数 0

我有一个表单,用于将JSON键值对中的表单数据发布到URL。格式同下:

[{'name':'URL','value':'http://127.0.0.1:8000/test/addcustomer'},{'name':'FirstName','value':'Abc'},{'name':‘姓氏’,'value':'Xyz'},{'name':‘道布’,'value':'123457'},{'name':'EmailAddress','value':'example@gmail.com'},{'name':'Address1','value':'123 Street'},{'name':'Address2','value':'11123'},{'name':'City','value':'Xyz'},{'name':'State','value':'Pqr'},{'name':'PostalCode','value':'12345'}]

而不是这样,我想要如下所示:

[{'URL':'http://127.0.0.1:8000/test/addcustomer',‘名字’:‘Abc’,‘姓’:'Xyz',‘道布’:‘123457’,'EmailAddress':'example@gmail.com','Address1':'123街‘,'Address2':'11123',’城市‘:’Xyz‘,’州‘:’Pqr‘,’邮编‘:’12345‘}]

请参考以下代码:

代码语言:javascript
复制
$(document).ready(function(){
    $("#submit").on('click', function(){
     var a=document.forms["myForm"]["EmailAddress"].value;
     var b=document.forms["myForm"]["URL"].value;
        if (a==null || a=="" || b==null || b=="")
        {
            $("#EmailAddress").css("border-color", "#963634");
            $("#URL").css("border-color", "#963634");
            alert("Please fill Email Address and URL!!!");
            return false;
        }
        else
        $.ajax({
            url: b, 
            type : "POST",
            data : JSON.stringify($("#myForm").serializeArray()), 
            success : function(result) {
                alert(result);
                $("#myForm")[0].reset();
            },
            error: function() {
                alert('Please enter valid URL');
            }
        })
    });
});
EN

回答 1

Stack Overflow用户

发布于 2019-04-28 08:11:25

我会尝试这样的方法:

代码语言:javascript
复制
        else
        {
            let formData = $("#myForm").serializeArray();
            let data = formData.reduce((acc, x) => acc[x.name] = x.value, {});
            $.ajax({
                url: b, 
                type : "POST",
                data : JSON.stringify(data), 
                success : function(result) {
                    alert(result);
                    $("#myForm")[0].reset();
                },
                error: function() {
                    alert('Please enter valid URL');
                }
            })
        }

reduce行大致相当于:

代码语言:javascript
复制
// formData is in the form [ {'name': 'A', 'value': B}, {'name': 'X', 'value': Y},... ]
let data = {};
for (let item of formData)
    data[item.name] = item.value;
// data is now in the form { 'A': B, 'X': Y, ... }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55885488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档