我正在使用 AJAX 异步调用一个 PHP 脚本,该脚本返回一个大型序列化的 JSON 对象数组(大约 75kbs 或 80k 个字符)。每次我尝试退回它时,它都会达到 3000 个字符的限制。服务器上或 jQuery 的 ajax 实现中是否设置了最大大小?
编辑:3'000 限制是 Chrome 限制,FF 有 10'000 个字符限制,Safari 没有限制。我猜除了更改我的代码以拆分/减少返回数据之外,没有解决此问题的办法。
最佳答案
您可以拆分您的 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的各个部分
最后在 for 循环中使用 $.extend
在 window.result_json
中获取新的 JSON 和旧的 JSON 元素
注意:$max_of_one
变量确定要发布多少个切片。
关于php - AJAX 响应大小限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10165543/