【问题标题】:jQuery AJAX Not POSTing Full Array to ServerjQuery AJAX 未将完整数组发布到服务器
【发布时间】:2012-10-04 04:29:55
【问题描述】:

我有一个非常大的多维 Javascript 数组,我使用 AJAX POST 将其传递给我的 PHP 文件:

$.ajax({
    type: "POST",
    dataType: 'json',
    url: "forms/scripts/testArray.php",
    data: {
        header: header,
        gridData: gridData
    }
});

gridData 是我的多维数组,它有 1000 个元素,每个子数组包含 3 个元素。当我调试并查看我的 PHP 文件中的数据时,从POST 到达的数组中只有大约 350 个元素。

使用 Firebug,我得到了有关发送的文件大小和接收的文件大小的信息:

如您所见,小弹出窗口告诉我 AJAX 调用发送了 462.8 KB,但实际上只收到了 4.9 KB。这是真的?这就是为什么我只得到我试图发布的数组的一部分吗?

另外,这是通过 AJAX POST 将多维数组从 Javascript 移动到 PHP 的最佳方式吗?

感谢您提供的任何帮助!

【问题讨论】:

  • 收到的总数是回复而不是帖子。其他东西正在影响你得到的东西
  • JavaScript 中没有多维数组,数组是从零开始的。在发送到服务器之前尝试检查您的阵列。
  • 数组没问题。我在 PHP 中接收良好,只是没有接收到整个数组。

标签: php jquery ajax post multidimensional-array


【解决方案1】:

删除php.ini文件中的;(分号),设置增加max_input_vars就可以了:

max_input_vars = 10000

【讨论】:

    【解决方案2】:

    数据中可能有一个奇怪的字符在“接收”的最后一个元素上或之后抛出 json 编码/解码。

    【讨论】:

    • 为了测试这一点,我创建了一个包含 10,000 个元素的数组,每个元素包含文本 apples and oranges,它仍然将我的 PHP 文件中的数组从数组最初的 10,000 个元素中截断为大约 1,000 个元素在 Javascript 中。所以在做了这个测试之后,我不认为一个奇怪的角色让我失望了......
    【解决方案3】:

    可能,工具链中的某些东西限制了可以发送/接收的最大数量。这可以在您的网络服务器(可能是 Apache)中,或者(更可能)在您的 PHP 设置中。 PHP 有一些设置,如 post_max_size、max_input_time、max_input_nesting_level、max_input_vars 等。您应该检查这些设置!

    【讨论】:

    • 谢谢 - 这是我的设置:post_max_size = 500M | max_input_nesting_level = 64 | max_input_time = 60500M 似乎不会阻止这个 POST,不是吗?
    • 经过进一步检查,我需要设置max_input_vars = (large #)。就我而言,我将其设置为max_input_vars = 1000000
    猜你喜欢
    • 2011-09-13
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 2021-09-15
    • 2011-12-15
    • 1970-01-01
    相关资源
    最近更新 更多