2012-04-15 109 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变量决定要发送多少片。