2012-04-15 1 views
5

Ich benutze AJAX, um ein PHP-Skript asynchron aufzurufen, das ein großes serialisiertes Array von JSON-Objekten (etwa 75 KB oder 80.000 Zeichen) zurückgibt. Jedes Mal, wenn ich versuche, es zurückzugeben, erreicht es eine Grenze von 3000 Zeichen. Gibt es eine maximale Größe irgendwo auf Servern oder in jQuery's Ajax-Implementierung?Größenbeschränkung für AJAX-Antworten

BEARBEITEN: das 3'000 Limit ist ein Chrome Limit, FF hat ein Limit von 10'000 Zeichen und Safari hat kein Limit. Ich vermute, dass es keine Lösung dafür gibt, abgesehen davon, dass ich meinen Code ändere, um die Rückgabedaten zu teilen/zu verringern.

+0

Ähnlich: http://stackoverflow.com/q/1151987/1026459 –

+0

Das ist ASP obwohl - ich sah, dass bei der Suche ... – RichieAHB

+0

[Diese Frage] (http://stackoverflow.com/questions/898477/ ajax-request-browser-limit) könnte Licht ins Dunkel bringen. Die akzeptierte Antwort besagt, dass es das _depth_ des JSON-Arrays ist, das zählt, nicht seine Größe. Wenn Sie Ihre 3k Char-Antwort anzeigen, wird sie am Anfang eines Arrays/Objekts oder an einem zufälligen Ort abgeschnitten? – Bojangles

Antwort

1

Sie können Ihre JSON und erhalten mit $ Schnipsel Teil für Teil

Ich habe ein Beispiel für Sie

Html Seite aufgeteilt:

<!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 Seite (Dateiname x ist. php):

<?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); 
    } 

} 
?> 

Zum einen mit $.get (part = Größe), überprüfen, wie viele Stück s.

Zweitens mit $.ajax (part = (int) Teilnummer), in for-Schleife, die Teile von JSON erhalten eins nach dem anderen

schließlich mit $.extend in for-Schleife marge neue bekommen JSON und alte JSON Elemente in window.result_json

HINWEIS: $max_of_one Variable bestimmen, wie viele Schichten zu buchen.