[javascript] jQueryのajax()関数で処理できる文字数の限界を試せなかった

Google App Engine上で動作しているアプリケーションからAPIを利用して、jsonデータ引っ張ってきたんですが、なんか48000ちょいしか取得できてなくて、途中でデータぶった切れちゃってる・・・

原因が全然わからなくて困ってたら、同じような現象で困ってる人いました。

なにやら、あまりにもデータがでかいと全部取得する前に、次の処理が動いて、結果途中でデータがきれることがある・・・・と。

そりゃ困った・・・。原因を探るために色々検診してみます。
※オチをいいますが、おそらくajax()が悪いのではないと思われます。
それか、再現した環境とjQueryのバージョンが違う…

以下検証したコード

jqHXR.complate() とコールバックでsuccess:function()で処理する二種類用意しました。

ajax()でコールされているajax.phpがこちら。

メモリの制限を無制限にし、定数で文字数を定義しておいて、その数だけ”A”を返す、だけです。

上記2ファイルをローカルに構築したWEBサーバに置いて、GoogleChromeからアクセスして、ajaxで文字を取得します。

これ、結局ちゃんと限界値を試せなかったので、結果をザクっと書いちゃいます。

文字数を少しづつ増やしていって、最終的にindex.htmlで正常に表示されたのは僕の環境では13721351文字(=byte)でした。それ以上だとエラーは出ないし、文字数も取得できたけど、HTMLに出力されない、という状態でした。

これはブラウザに依存するのかなー・・・?文字数は取得できるので、間違いなくajaxで受け取るところまではできているはずです。(文字数の計算はjavascript側でしているので)

これは調査が進み次第、加筆修正します。

最初に書いたGAE上での問題では、文字数カウントの段階で48000ちょいだったので、今回の検証とは別の状況かも・・・。まずは再現するところから、ですね・・・。中途半端ですが、記録まで。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です