0

我正在发送一个带有 ajax 发布请求的多维对象,但有时对象的最后一部分会丢失?您可以发送多少数据是否有某种限制?

--------

更新

data.accounts在 ajax 发布之前计算孩子时,数字是 221,而data.accounts在成功处理程序中计算时,数字仍然是 221

发送的数据最大10kb


当我在使用 ajax 发送对象之前执行此操作时,所有数据都被表示

var arr = [];
for(var key in obj){
    arr[arr.length] = key+' = '+obj[key];
}

alert(arr.join('\n'));

但是在后端执行此操作时,数据的最后一部分会丢失

print_r($data);

数据结构(有超过 200 个孩子,data.accounts但只收到 198 个)

    Array
    (
        [account_id_] => 0
        [name] => 1
        [type] => 2
        [type_pl] => Drift
        [type_b] => Status
        [type_p] => 
        [type_h] => Tekst
        [type_t] => Sum
        [att_sumfrom] => 4
        [vatcode] => 3
        [accounts] => Array
            (
                [0] => Array
                    (
                        [account_id_] => 1
                        [name] => OMS�TNING
                        [type] => 3
                        [att_sumfrom] => 
                        [vatcode] => 
                    )

                [1] => Array
                    (
                        [account_id_] => 1000
                        [name] => Varesalg
                        [type] => 0
                        [att_sumfrom] => 
                        [vatcode] => S25
                    )

                [2] => Array
                    (
                        [account_id_] => 1200
                        [name] => Udf�rt arbejde
                        [type] => 0
                        [att_sumfrom] => 
                        [vatcode] => S25
                    )
.......

发送数据

this.send = function(){
    var jqxhr = $.ajax({
            url : this.url,
            data : this.data,
            timeout : this.no_timeout ? 0:this.timeout,
            cache : this.cache,
            dataType : this.dataType,
            type : this.type,
            global : this.global
        })
4

2 回答 2

2

每个请求可以发送多少数据是有限制的,具体取决于您使用的方法。如果您使用POSTPHP 作为后端,请查看 PHP.inimemory_limitpost_max_size,其中前者是脚本内存占用,后者是通过 post 请求可以发送多少数据。默认值分别为 128M 和 8M。

如果您发送的数据过多,服务器不允许处理,数据将按照说明进行剪切。

更新

没有所有相关代码就很难调试。在打印阵列之前,您是否在后端做任何其他事情,或者您只是在做print_r($_POST['data'])?因为如果你不做任何其他事情,它听起来仍然像是服务器上的内存设置。

轶事

我记得有一个项目,我有大约 400 行数据,每行有 7 列(大量文本),我通过 AJAX 对象发送,最后一行中的大约 70 行被删掉了。加倍后,post_max_size所有数据都被正确发送。

于 2012-04-11T08:02:04.097 回答
0

这可能与您的问题有关,也可能与您的问题无关,但是您应该使用“push”函数,而不是根据数组长度附加数组项,它将一个项添加到数组的末尾:

for(var key in obj){
    arr.push(key+' = '+obj[key]);
}
于 2012-04-11T08:01:57.843 回答