【问题标题】:AJAX Response Size LimitAJAX 响应大小限制
【发布时间】:2012-04-15 19:57:38
【问题描述】:

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

编辑:3'000 限制是 Chrome 限制,FF 有 10'000 个字符限制,而 Safari 没有限制。我猜除了更改我的代码以拆分/减少返回数据之外,没有解决此问题的方法。

【问题讨论】:

  • 虽然是 ASP - 我在搜索时看到了...
  • This question 可能会有所启发。接受的答案指出,重要的是 JSON 数组的 depth,而不是大小。当您查看您的 3k 字符响应时,它是在数组/对象的开头截断还是在随机位置截断?
  • 错误是逻辑的还是明确的?
  • 它返回预期返回值的开头,然后中间有一个省略号,然后返回预期返回值的结尾。

标签: php jquery ajax size


【解决方案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>

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(part=(int)PART-NUMBER),在for循环中一一获取JSON的各个部分

最后,$.extend 在 for loop marge 中新获取 JSON 和 window.result_json 中的旧 JSON 元素

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    • 2010-12-21
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多