php变量在ajax请求中溢出

时间:2014-02-04 18:20:26

标签: php jquery ajax json

这是一个理论问题。我确切地知道出了什么问题,我只是看不到它的方法。

我正在调用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中的任何设置。必须有一个聪明的解决方案,而不涉及设置。

1 个答案:

答案 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