AJAX响应大小限制

Ric*_*AHB 7 php size ajax jquery

我正在使用AJAX异步调用PHP脚本,该脚本返回一个大型序列化的JSON对象数组(大约75kbs或80k字符).每次我尝试返回它都会达到3000个字符的限制.是否在服务器上或jQuery的ajax实现中设置了最大大小?

编辑:3'000限制是Chrome限制,FF限制为10'000,Safari没有限制.我猜测除了更改我的代码以分割/减少返回数据之外没有其他解决办法.

小智 1

您可以拆分 JSON 并部分地使用 $.ajax

我给你举了一个例子

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>
Run Code Online (Sandbox Code Playgroud)

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

}
?>
Run Code Online (Sandbox Code Playgroud)

首先使用$.get(part=size) 检查有多少切片。

其次与$.ajax(part=(int)PART-NUMBER) ,在 for 循环中一一获取 JSON 的各个部分

最后,$.extend在 for 循环中,marge new 获取 JSON 和旧 JSON 元素window.result_json

注意: $max_of_one变量决定要发布的切片数量。