代码之家  ›  专栏  ›  技术社区  ›  Daniel W.

$.post期间数据丢失

  •  1
  • Daniel W.  · 技术社区  · 10 年前

    我有一份清单 <ul> 共篇文章 <li> 以及按钮上的事件处理程序。

    单击按钮时,我聚合所有 <li> s ID(整数)使用:

    data.articles  = $('#category-articles').sortable('toArray');
    
    // alerts 1298
    alert(data.articles.length);
    
    $.post(....);
    

    在服务器端:

    <?php
    // echoes 968
    echo sizeof($_POST['articles']);
    

    明确说明:

    • 正在尝试发送 1298 数组中的项 data.articles
    • 仅接收第一个 968 数组中的项 $_POST['articles']

    数据在操作后丢失。在实际帖子和目标PHP之间没有代码可以过滤或删除任何项目。

    我使用的是apache和PHP5.3。

    请求:

    Content-Length: up to 80,000 bytes
    

    服务器:

    post_max_size = 100M
    upload_max_filesize = 100M
    

    我启用了错误报告,但它只是缩小了我的阵列,我不明白为什么它不发送完整的数据。有人有主意吗?

    1 回复  |  直到 10 年前
        1
  •  3
  •   Community dbr    7 年前

    的副本 Array being chopped off over ajax post. Ajax posting limit? ?

    建议这与PHP的max_input_vars有关:
    此限制仅适用于多维输入数组的每个嵌套级别。

    要在不编辑服务器配置的情况下解决此问题,请执行以下操作:

    // Serialize the elements into a single var using join():
    
    data.articles  = $('#category-articles').sortable('toArray').join(';');
    

    在服务器端:

    // Unserializing the single variable back into an array:
    
    $articles = explode(';', $_POST['articles']);
    

    分隔字符 ; 不能 如果出现问题,请选择不同的字符。