Javascript 在jquery ajax提交之前修改数据

Javascript 在jquery ajax提交之前修改数据,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,我有一个表单供管理员用来修改用户详细信息,在提交之前,我想将数据平面数组的结构修改为具有某种层次结构的json对象 User = { username: 'myUserName' , roles : [ {role : 'ADMIN'},{role: USER} ], etc..} 因此,要在我的客户端网页中执行此操作,我已完成以下操作: $("#submitUpdate").click(function() { var dataAsJson = JSON.string

我有一个表单供管理员用来修改用户详细信息,在提交之前,我想将数据平面数组的结构修改为具有某种层次结构的json对象

User = { username: 'myUserName' , roles : [ {role : 'ADMIN'},{role: USER} ], etc..}
因此,要在我的客户端网页中执行此操作,我已完成以下操作:

$("#submitUpdate").click(function() {
            var dataAsJson = JSON.stringify(function(){
                //user
                var o = {};
                //spring token
                var tk = {};
                //var usrname
                var un={};
                var formData = $("#updateForm").serializeArray();
                $.each(formData, function(k, v) {
                    if (o[v.name] !== undefined) {
                        if (!o[v.name].push) {
                            o[v.name] = [ o[v.name] ];
                        }
                        o[v.name].push(v.value || '');
                    } else {
                        if (v.name === 'userRoles') {
                            if (v.value !== undefined) {
                                var a = [];
                                $.each(v.value.split(','), function(i, rl) {
                                    var r = {};
                                    r.role = rl;
                                    a.push(r);
                                });
                                o[v.name] = a;
                            } else
                                o[v.name] = [];
                        } else if (v.name === '_csrf') {
                            tk[v.name] = v.value;
                        } else if (v.name === '_username') {
                            un[v.name] = v.value || '';
                        } else
                            o[v.name] = v.value || '';
                    }
                });
                var obj = [];
                obj.push(tk);   obj.push(un);   obj.push(o);
                return  obj;
            }());

            $("#updateForm").ajaxSubmit({
                url : "${userUpdateCtx}",
                data: dataAsJson,
                beforeSubmit : function(formData, jqForm, options) {

                },
                success : function(msg) {
                    $table.bootstrapTable('refresh');
                },
                error : function(e) {
                    showError(e);
                }
            });
        });
问题是for从未得到submit,而我得到了错误400

我尝试在提交前将处理代码放入其中,并返回字符串JSON.stringifyobj,但这似乎也不起作用

我怎样才能做到这一点

编辑

多亏了下面的评论,我已经修复了dataAsJson,但仍然有相同的错误,请求的转储看起来像是将其切断太长时间:

URL de la requête :     http://localhost:8080/WebMarket/admin/users/update?_csrf=9323a5ac-9a49-436f-a799-89b4814fb309&enabled=1&firstName=Steve&lastName=Jobs&_username=manager&username=manager&password=%242a%2410%24BVRCqPA6.qdvs%2Fma0uH6Here4ozKudoHyH2OFz2xc3.FfwL%2FEyXz6&userRoles=ROLE_MANAGER&0=%5B&1=%7B&2=%22&3=_&4=c&5=s&6=r&7=f&8=%22&9=%3A&10=%22&11=9&12=3&13=2&14=3&15=a&16=5&17=a&18=c&19=-&20=9&21=a&22=4&23= 
Méthode de la requête :     POST
Code d'état :   HTTP/1.1 400 BAD REQUEST

这里可能会发生一些不同的事情,但最容易识别的一点是,您的dataAsJSON正在尝试对functionbody而不是函数结果进行字符串化。即函数{}与函数{}。formData在beforeSubmit中也未定义。您最好在fiddle中提供完整的代码,不包括ajax调用。@visibleman感谢您的提示,事实上,“dataAsJson”现在不是空的,但我仍然收到错误HTTP 400。@JSantosh事实上表单的工作模式类似于提交按钮,而不是ajax模式,但我需要ajax,因为我必须以json的形式发送数据,以供我的应用服务器处理。我有一个基于spring mvc的应用程序
URL de la requête :     http://localhost:8080/WebMarket/admin/users/update?_csrf=9323a5ac-9a49-436f-a799-89b4814fb309&enabled=1&firstName=Steve&lastName=Jobs&_username=manager&username=manager&password=%242a%2410%24BVRCqPA6.qdvs%2Fma0uH6Here4ozKudoHyH2OFz2xc3.FfwL%2FEyXz6&userRoles=ROLE_MANAGER&0=%5B&1=%7B&2=%22&3=_&4=c&5=s&6=r&7=f&8=%22&9=%3A&10=%22&11=9&12=3&13=2&14=3&15=a&16=5&17=a&18=c&19=-&20=9&21=a&22=4&23= 
Méthode de la requête :     POST
Code d'état :   HTTP/1.1 400 BAD REQUEST