2012-04-15 156 views
5

我正在使用AJAX異步調用返回JSON對象的大型序列化數組(大約75kbs或80k字符)的PHP腳本。每次我嘗試並返回時,它都會遇到3000個字符的限制。在服務器的任何地方或jQuery的ajax實現中是否有最大尺寸設置?AJAX響應大小限制

編輯:3'000限制是Chrome限制,FF有10'000個字符限制,Safari沒有限制。我猜測除了改變我的代碼來分割/減少返回數據之外,沒有其他解決方法。

+0

類似:http://stackoverflow.com/q/1151987/1026459 – 2012-04-15 20:01:01

+0

這是ASP雖然 - 我看到,當搜索... – RichieAHB 2012-04-15 20:02:00

+0

[This question](http://stackoverflow.com/questions/898477/ ajax-request-browser-limit)可能會有所幫助。接受的答案指出,這是JSON數組的_depth_重要,而不是它的大小。當你查看你的3k字符響應時,是在數組/對象的開始處,還是在隨機的地方切斷? – Bojangles 2012-04-15 20:02:18

回答

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):

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

} 
?> 

首先用$.get(part = size),檢查有多少片秒。

其次與$.ajax(部分=(int)的PART-NUMBER),在for循環的一個

最後在for循環瑪吉新獲得JSON老JSON元素$.extendwindow.result_json

得到JSON一個的零件

注意:$max_of_one變量決定要發送多少片。