JSON对象最大大小?

14 php apache ajax jquery json

使用jquery,我可以使用像这样的ajax从客户端向服务器发送json对象:

var strJSON = '{"event":[{
    "dates":[
        "2009-10-14","2009-10-15"],
   "teams":[
        {"id":"0","country":"USA","state":"CA","name":"California Polytechnic State University","subteam":""},
        {"id":"1","country":"USA","state":"CA","name":"California State University, Bakersfield","subteam":""},
        {"id":"2","country":"USA","state":"CA","name":"California State University, Fresno","subteam":""},
        {"id":"3","country":"USA","state":"CA","name":"California State University, Fullerton","subteam":""}]
}]}';

$.ajax({
    url: '../ajax/save_event',
    type: 'POST',
    data: { data : strJSON },
    dataType: 'json',
    timeout: 8000,
    cache: false
});
Run Code Online (Sandbox Code Playgroud)

它运作良好.但是如果JSON字符串变得更大(不确定确切的大小,但大约大5倍),服务器收到的$ _POST数据为空.谁知道为什么?

我正在使用Apache/PHP/jquery.它发生在IE和Firefox上.我需要调整配置设置吗?

这是一个无法通过的字符串示例:

{"events":[{"dates":["2009-10-10","2009-10-11","2009-10-12"],"divisions":[{"level":"Collegiate","name":"Varsity","subdivision":"Division I","rounds":[],"teams":[{"id":"0","country":"USA","state":"CA","name":"California Polytechnic State University","subteam":""},{"id":"1","country":"USA","state":"CA","name":"California State University, Bakersfield","subteam":""},{"id":"2","country":"USA","state":"CA","name":"California State University, Fresno","subteam":""},{"id":"3","country":"USA","state":"CA","name":"California State University, Fullerton","subteam":""},{"id":"4","country":"USA","state":"CA","name":"Stanford University","subteam":""},{"id":"5","country":"USA","state":"CA","name":"University of California, Davis","subteam":""},{"id":"6","country":"USA","state":"CA","name":"San Francisco State University","subteam":""},{"id":"7","country":"USA","state":"CA","name":"Lassen Community College","subteam":""},{"id":"8","country":"USA","state":"CA","name":"Menlo College","subteam":""},{"id":"9","country":"USA","state":"CA","name":"Fresno Pacific University","subteam":""},{"id":"10","country":"USA","state":"CA","name":"Bakersfield","subteam":""},{"id":"11","country":"USA","state":"CA","name":"Buchanan","subteam":""},{"id":"12","country":"USA","state":"CA","name":"Campolindo-Moraga","subteam":""},{"id":"13","country":"USA","state":"CA","name":"Fremont-Sunnyvale","subteam":""},{"id":"14","country":"USA","state":"CA","name":"Ponderosa-Shingle Springs","subteam":""},{"id":"15","country":"USA","state":"CA","name":"West Covina","subteam":""},{"id":"16","country":"USA","state":"CA","name":"Gilroy","subteam":""},{"id":"17","country":"USA","state":"CA","name":"San José State University","subteam":""},{"id":"18","country":"USA","state":"CA","name":"University of California, Los Angeles","subteam":""},{"id":"19","country":"USA","state":"CA","name":"Sierra College","subteam":""},{"id":"20","country":"USA","state":"CA","name":"Selma","subteam":""},{"id":"21","country":"USA","state":"CA","name":"Liberty","subteam":""}],}]}]}
Run Code Online (Sandbox Code Playgroud)

它是使用json.org的"stringify"创建的:

var strJSON = JSON.stringify(oEvent);
Run Code Online (Sandbox Code Playgroud)

编辑: 进一步调查,我将dataType更改为"text"并尝试发送一长串数字.它工作直到~3500个字符然后扼流圈(当我说"扼流圈"时,我的意思是请求到达服务器时带有$ _POST空.)

我的PHP post_max_size是64M,所以不是这样.有人建议使用Apache的"LimitRequestBody",它不在httpd.conf中,所以我在其中添加了"LimitRequestBody 0"并重新启动了Apache.这也没有帮助.

任何其他建议???

pix*_*x0r 6

这可能是由于您的服务器配置.检查php.ini的设置,max_post_size并确保它足够大以发布您的数据.还要检查您的Web服务器设置--Apache有一个LimitRequestBody可能导致您的问题的指令.最后,检查您的Web服务器和PHP错误日志,以查看大帖子是否触发任何错误.