2017-12-05 8 views
0

私は非常に大きな配列をJavaSciptに渡してクライアント側で操作しようとしていますが、動作しません。これらの配列には通常、それぞれ約12,000個の要素があり、このコードスニペットは2,000個の要素だけをプラグインすると正しく機能します。 JSON解析 - メモリ依存?

<script type="text/javascript"> 

     var getLenders = JSON.parse('<?php echo json_encode($getlenders); ?>'); 
     var discountArray = JSON.parse('<?php echo json_encode($discountArray); ?>'); 
     var getData = JSON.parse('<?php echo json_encode($sortedArray); ?>'); 

    </script> 

は、私は、しかし、それはまだ動作していない、それが十分以上になるだろう考えて512メガバイト(同じくらい前に4時間)に、サーバーのメモリ要件を増加させました。メモリを1024MBに増やす前に、これが動作していない他の理由があるかどうかを知りたいと思います。それはクライアント側メモリの問題かもしれませんか?

ご了承ください。

+0

JSONデータ構造はJavaScriptのリテラル構造の後にモデル化されているため、これらのJSON.parse呼び出しは必要ありません。 –

+0

これは、サーバー側のメモリで問題になる可能性があります。 12000は、あなたがどちらの側にいても、一度に多くのアイテムをメモリに入れておくことです。オンデマンドでロードしない理由は何ですか? – cHao

+0

@cHao私は方法がわからないので、要求に応じてロードしません。下の誰かがjQueryの一部だと言いましたが、これは2,3週間前に学んだことです。 – Jeesubmunu

答えて

1

あなたのクライアントがあなたのページを実行するのに十分なメモリを持っていることを知ることができず、このページがブラウザをフリーズさせたり、クラッシュすることがあります。

まずあなたはこのコードを最適化することができますJSONはJavaScriptをベースとしていないため、文字列に変換し、再びパース必要

var getLenders = <?php $a = json_encode($getlenders); echo $a == null? '{}': $a; ?> ; 
    var discountArray = <?php $b = json_encode($discountArray); echo $b == null? '{}': $b; ?>; 
    var getData = <?php $c = json_encode($sortedArray); echo $c == null? '{}': $c; ?>; 

2つ目ですが、必要なときにはajaxと必要な値だけを取得します。

0

しないでください。

このような大量の要素の処理は利益がありません。何とか配列を生成するサーバーにとっては悪いことですが、膨大な量に対処しなければならないクライアントにとっては悪いことです。クライアントがすべてのデータを一度に表示する必要はないと思います。必要なときにのみデータをロードするajax実装について考えない理由は何ですか?

0

ページ設定を使用して実装する必要があります。だから、たぶん100個のエントリーを一度に表示して、それを編集して見出しで並べ替えることができます。 次に、nextリンクをクリックして、次の100個のエントリを表示することができます。次に、データを取得してWebサイトを更新するAJAXリクエストを行います。 ジョブにはjQueryで十分です。