Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ajax请求中的php变量溢出_Php_Jquery_Ajax_Json - Fatal编程技术网

ajax请求中的php变量溢出

ajax请求中的php变量溢出,php,jquery,ajax,json,Php,Jquery,Ajax,Json,这是一个理论问题。我知道到底出了什么问题,只是看不到解决的办法 我在ajax请求中从php页面A调用php页面B,并在php页面B中提交查询。我试图将数据作为json_编码的数组返回到php页面A。问题是json变量溢出(超出了内存限制) 因此,我得到了一个例外: [object Object] parsererror SyntaxError: JSON.parse: unexpected character 如果我没有试图将此数据作为json_编码的数组返回以显示它,我只会将数据回显到屏幕上

这是一个理论问题。我知道到底出了什么问题,只是看不到解决的办法

我在ajax请求中从php页面A调用php页面B,并在php页面B中提交查询。我试图将数据作为json_编码的数组返回到php页面A。问题是json变量溢出(超出了内存限制)

因此,我得到了一个例外:

[object Object] parsererror SyntaxError: JSON.parse: unexpected character
如果我没有试图将此数据作为json_编码的数组返回以显示它,我只会将数据回显到屏幕上,而不是将其存储在变量中。但是,因为我需要将数据作为json_编码的数组返回,所以我必须存储它

我能想到的唯一解决方案是简单地在php页面B上回显数据,并改变我在页面A上处理日期的方式(即不希望json作为数据类型)

是否有其他可能的方法(限制查询返回的行)


编辑:我也不想更改php.ini中的任何设置。必须有一个聪明的解决方案,而不必乱搞设置

使用分页从服务器请求数据。基本上,一次请求n个结果,直到到达返回0个结果的页码为止。因此,与一次请求20k条记录不同,您将连续20次请求1000条记录(或您分页数据的任何数字)


对于您的查询,将其限制为
n
行,以
$\u GET[“page”]*n+1

一次请求n行,直到不再有行填充数组。完成后,对数组进行编码。不过,您可能仍然会遇到相同的问题。如果这样做,则一次请求n,一次返回n到浏览器,并请求更多,直到没有更多可用。(又名分页)数组有多大?如果您真的需要它,您可以修改php的内存限制。不过,您可以移动问题,如果服务器无法处理它,那么浏览器呢?@KevinB,您可以详细说明一下,作为回答吗?嗯,我不能给出任何代码,我真正能做的就是扩展思考过程。@KevinB。好的,我会研究分页。谢谢。这也可以用$u POST执行吗?是的,这与用POST替换GET没有什么不同。
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);