使用jQuery ajax提交大型表单,而不使用serialize()

时间:2015-01-06 23:22:39

标签: jquery ajax forms post serialization

我想使用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(),这样我就不用担心数据的长度了?

1 个答案:

答案 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);
    }
  });
}

叹息。它总是最愚蠢的错误浪费我的大部分时间。