2012-04-15 49 views
5

Tôi đang sử dụng AJAX để gọi không đồng bộ một tập lệnh PHP trả về một mảng serialized lớn các đối tượng JSON (khoảng 75kbs hoặc 80k ký tự). Mỗi khi tôi thử và trả lại nó, nó đạt đến giới hạn 3000 ký tự. Có kích thước tối đa được đặt ở bất kỳ nơi nào trên máy chủ hoặc trong quá trình triển khai ajax của jQuery không?Giới hạn kích thước phản hồi AJAX

CHỈNH SỬA: giới hạn 3'000 là giới hạn của Chrome, FF có giới hạn ký tự là 10'000 và Safari không có giới hạn. Tôi đoán không có sửa chữa cho việc này ngoài việc thay đổi mã của tôi để chia nhỏ/giảm bớt dữ liệu trả về.

+0

Tương tự: http://stackoverflow.com/q/1151987/1026459 –

+0

Đó là ASP mặc dù - Tôi thấy rằng khi tìm kiếm ... – RichieAHB

+0

[Câu hỏi này] (http://stackoverflow.com/questions/898477/ ajax-request-browser-limit) có thể làm sáng tỏ. Câu trả lời được chấp nhận nói rằng đó là _depth_ mảng JSON quan trọng, không phải kích thước của nó. Khi bạn xem phản hồi char 3k của bạn, nó có bị cắt ở đầu một mảng/đối tượng hay ở một nơi ngẫu nhiên không? – Bojangles

Trả lời

1

Bạn có thể chia JSON của bạn và nhận được với $ .ajax từng phần

tôi đã thực hiện một ví dụ cho bạn

Html phụ:

<!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 bên (tên file là 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); 
    } 

} 
?> 

Đầu tiên với $.get (part = size), hãy kiểm tra xem có bao nhiêu lát S.

Thứ hai với $.ajax (phần = (int) PART-NUMBER), trong vòng lặp for có được các bộ phận của JSON từng người một

Cuối cùng với $.extend trong vòng lặp for Marge nhận được yếu tố JSON và JSON cũ mới trong window.result_json

LƯU Ý: $max_of_one biến xác định số lượng lát cần đăng.

Các vấn đề liên quan