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