我想使用jQuery Ajax提交一个大表单,但是在整天搜索解决方案后,它似乎不可能。我希望我错了。
基于这个主题的众多主题,这是我到目前为止所做的。
function familyUpdate() {
familyOverlay(true);
var form = $("#familyform");
var formdata = form.serialize();
$.ajax({
url: 'family-update.php',
data: {
cache: false,
type: 'post',
dataType: 'json',
data: formdata
},
success: function () {
familyOverlay(false);
},
error: function () {
alert("Unable to update family");
familyOverlay(false);
}
});
}
问题是我的表单非常大,据我所知,使用serialize()生成一个字符串来提交并实质上将我的POST转换为GET,这意味着我遇到了我的URI长度限制浏览器,因此整个表单都没有提交。
有没有办法使用POST提交我的表单,而不使用serialize(),这样我就不用担心数据的长度了?
答案 0 :(得分:1)
事实证明我的问题在于我的语法。
特别是这部分:
data: {
cache: false,
type: 'post',
dataType: 'json',
data: formdata
},
应该只是......
data: formdata,
type: 'POST',
这样可行:
function familyUpdate(){
familyOverlay(true);
var form = $("#familyform");
var formdata = form.serialize();
$.ajax({
url: 'family-update.php',
type: 'POST',
data: formdata,
success: function() {
familyOverlay(false);
},
error: function(){
alert("Unable to update family");
familyOverlay(false);
}
});
}
叹息。它总是最愚蠢的错误浪费我的大部分时间。