这是一个理论问题。我确切地知道出了什么问题,我只是看不到它的方法。
我正在调用ajax请求中从 php page A 调用 php page B 并在 php page B 中提交查询。我正在尝试将数据作为json_encoded数组返回到 php page A 。问题是json变量溢出(最大化memory_limit)。
结果我得到了一个例外:
[object Object] parsererror SyntaxError: JSON.parse: unexpected character
如果我没有尝试将此数据作为json_encoded数组返回以显示它,我只是将数据回显到屏幕而不是将其存储在变量中。但是,因为我需要将这些数据作为json_encoded数组返回,所以我必须存储它。
我能想到的唯一解决方案是简单地在 php page B 上回显数据,并改变我在页面A 上处理日期的方式(即不要期望json作为dataType)。
还有其他可能的方法(禁止限制查询返回的行)吗?
编辑:我也不想更改php.ini中的任何设置。必须有一个聪明的解决方案,而不涉及设置。
答案 0 :(得分:1)
使用分页从服务器请求数据。基本上,您将一次请求n个结果,直到您达到返回0结果的页码。因此,您不会一次请求20k记录,而是连续20次请求1000条记录(或者您将数据分页的任何数字)。
var resultArr = [];
var url = "foo.php";
function handleData(data) {
// do stuff with data here
console.log(data);
}
function getData(url,page) {
$.ajax(url,{data: { page: page}, type: "GET", dataType:"json"}).done(function(data){
if (data.length != 0) {
resultArr = resultArr.concat(data);
getData(url,page+1);
}
else {
handleData(resultArr);
}
});
}
getData(url,0);
对于您的查询,请将其限制为以n
$_GET["page"]*n+1
行