发送多维对象 - >最后一部分丢失了

时间:2012-04-11 07:38:47

标签: php jquery

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

--------

更新

在ajax帖子之前data.accounts计算孩子数量为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);

数据结构(data.accounts中有超过200个孩子,但只收到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
        })

2 个答案:

答案 0 :(得分:2)

每个请求可以发送多少数据,并且取决于您使用的方法。如果您在PHP中使用POST作为后端,请查看PHP.ini memory_limitpost_max_size,其中前者是脚本内存占用,后者是有多少数据可以通过邮寄请求发送。默认值分别为128M和8M。

如果您发送的数据太多,服务器不允许处理,则会按照说明剪切数据。

更新

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

<强>轶事

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

答案 1 :(得分:0)

这可能与您的问题有关,也可能没有,但是您应该使用“推送”功能,而不是根据数组长度附加数组项,这会将项添加到数组的末尾:

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