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

Submitting a large form using jQuery ajax, without using serialize()

我想使用 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 长度限制,因此没有提交整个表单。

有没有一种方法可以在不使用 serialize() 的情况下使用 POST 提交我的表单,这样我就不必担心数据的长度?

原来我的问题出在我的语法上。

具体这部分:

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

唉。浪费我最多时间的总是最愚蠢的错误。