在jquery ajax提交之前修改数据

时间:2015-08-27 00:31:30

标签: javascript jquery ajax json

我有一个管理员用来修改用户详细信息的表单,在提交之前我想将数据结构(平面数组)修改为具有某种层次结构的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永远不会被提交,我得到 ERROR 400

HTTP Status 400 -
Type Report Status
message
Description request sent by the client was syntactically incorrect.

我已尝试将处理代码放在beforeSubmit内并返回字符串JSON.stringify(obj),但这似乎也不起作用。

我怎么能做到这一点?。

修改

感谢下面的评论我修复了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

0 个答案:

没有答案