2012-04-15 27 views
5

AJAXを使用してJSONオブジェクトの大規模なシリアル化配列(約75kbsまたは80k文字)を返すPHPスクリプトを非同期に呼び出しています。私が試してそれを返すたびに、それは3000文字の制限を打つ。サーバー上またはjQueryのajax実装内で最大サイズが設定されていますか?AJAXレスポンスサイズ制限

EDIT:Chromeの制限は3,000、FFは10,000文字制限があり、Safariには制限はありません。私は、離れて返信データを分割する私のコードを変更することから離れてこのための修正はないと思っています。

+0

同様に:http://stackoverflow.com/q/1151987/1026459 –

+0

これはASPですが、私はそれを見たときに見ました... – RichieAHB

+0

[この質問は](http://stackoverflow.com/questions/898477/) ajax-request-browser-limit)は、いくつかの光を放つかもしれません。受け入れられた答えは、サイズではなくJSON配列の_depth_であることを示しています。あなたの3kのcharレスポンスを見ると、配列/オブジェクトの始め、またはランダムな場所で切り捨てられますか? – Bojangles

答えて

1

あなたはJSONを分割し、一部

で$アヤックス一部を取得することができ、私はあなた

のHTML側のための例を作った:

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Document</title> 
    <script src="jquery.js"></script> 
    <script> 
    $(document).ready(function() { 

     window.result_json = {}; 

     $.get("x.php?part=size",function(data){ 
      var count = data; 
      for (var i = 0; i <= count; i++) { 
      $.ajax({ 
       dataType: "json", 
       url: "x.php", 
       async: false, 
       data: "part="+i, 
       success: function(data){ 
       $.extend(window.result_json,data); 
       } 
      }); 
      }; 
      console.log(window.result_json); 
     }); 
    }); 
</script> 
</head> 
<body> 

</body> 
</html> 

PHP側(ファイル名はXです。 PHP):$.get(一部=サイズでまず

<?php 
if(isset($_GET['part'])){ 

    function send_part_of_array($array,$part,$moo){ 
     echo json_encode(array_slice($array, $part * $moo,$moo,true),JSON_FORCE_OBJECT); 
    } 
    $max_of_one = 3; 
    $a = array("a","b","c","d","e","f","g","h","i","j"); 

    if($_GET['part'] == 'size'){ 
     echo round(count($a)/$max_of_one); 
    }else{ 
     send_part_of_array($a,$_GET['part'],$max_of_one); 
    } 

} 
?> 

)は、どのように多くのスライスをチェックs。

第二$.ajax(一部=(INT)PART-NUMBER)で、forループでループマージ、新規取得JSONとwindow.result_json

の古いJSON要素のためで $.extendと最後に1

によってJSON 1の部分を取得

注:$max_of_one変数は、投稿するスライス数を決定します。