0

ajax ポスト リクエストで多次元オブジェクトを送信していますが、オブジェクトの最後の部分が失われることがありますか? 送信できるデータ量に何らかの制限はありますか?

--------

アップデート

data.accountsajaxポストの前に子を数えるときの数は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

リクエストごとに送信できるデータ量には制限があり、使用している方法によって異なります。バックエンドとして PHPを使用している場合はPOST、PHP.inimemory_limitと を見てくださいpost_max_size。前者はスクリプト メモリの浪費であり、後者はポスト リクエストで送信できるデータの量です。デフォルトはそれぞれ 128M と 8M です。

サーバーが処理できないほど多くのデータを送信している場合、データは指示に従ってカットされます。

アップデート

関連するすべてのコードなしでデバッグするのは困難です。配列を印刷する前に、バックエンドで何か他のことをしていますprint_r($_POST['data'])か? 他に何もしていない場合でも、サーバーのメモリ設定のように聞こえるからです。

逸話

約 400 行のデータがあり、各行には AJAX オブジェクトを介して送信した 7 列 (大量のテキスト) があり、最後の行の約 70 行が切り取られたプロジェクトを覚えています。すべてのデータを2倍にした後、post_max_size適切に送信されました。

于 2012-04-11T08:02:04.097 に答える
0

これは問題に関連している場合とそうでない場合がありますが、配列の長さに基づいて配列アイテムをアタッチするのではなく、配列の最後にアイテムを追加する「プッシュ」関数を使用する必要があります。

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