Php JSON对象最大大小?

Php JSON对象最大大小?,php,jquery,ajax,apache,json,Php,Jquery,Ajax,Apache,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":""},

使用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
});
它工作得很好。但是如果JSON字符串变得更大(不确定确切的大小,但大约大5倍),服务器接收到的$u 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":""}],}]}]}
它是使用json.org的“stringify”创建的:

编辑: 进一步调查后,我将数据类型改为“text”,并尝试发送一长串数字。它工作到大约3500个字符,然后阻塞(当我说“阻塞”时,我的意思是请求到达服务器时带有空$\u POST)

我的PHP post_max_大小是64M,所以不是这样。有人建议使用不在httpd.conf中的Apache的“LimitRequestBody”,因此我在其中添加了“LimitRequestBody 0”,并重新启动了Apache。那也没用


还有其他建议吗?

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

在测试我的Json字符串时,似乎存在大小问题,当字符串很小时,一切正常,当我增加字符串(要编码的PHP数组)时,Json字符串的输出被切断

当对失败的字符串执行字符串长度时,我得到(7796)。因此,我将cli和apache的ini文件中的max post选项都更改为64M,而不是8M,我仍然遇到同样的问题。我不认为这个问题仅限于ApacheLimitRequestBody,因为php在CLI上提供相同的输出

还有一件事,当对编码的json字符串执行var_转储时,我可以看到它何时被切碎,json标记何时没有关闭,因此json解码器返回空值的原因

e、 g


您将看到字符串被截断的位置,并将零连接到输出的末尾

只是指向找到此页面的其他人的几个指针-我遇到了一个类似的问题,使用
jQuery.parseJSON()
无法解析JSON字符串

我很难为情地说,我的问题(可能与OP的问题无关)实际上是由一个错误的引用引起的。逃避它解决了问题。我最初认为它与字符串长度有关,因为它似乎只发生在8000个字符长的JSON字符串上,但它是在错误的位置终止字符串的错误引号

蒂姆,我不知道你是否了解了你的原始版本,但是粘贴你提供的字符串:

{"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":""}],}]}]}
如果这对其他人有任何帮助,into将给出以下错误:


语法错误:JSON.parse:应为双引号属性名

'jsonp'数据类型不使用且不能使用POST方法。相反,所有数据都以查询字符串的形式传递。因此,如果超过服务器的最大查询字符串长度,则不会传递数据。原因是jQuery将json数据作为节点加载到html文档中,这只能作为GET完成。如果您需要更多数据,则必须使用XML或其他格式。

能否尝试将其设置为非字符串开头?与中一样,只需将一个JavaScript对象传递给
ajax
调用的
data
参数。看看会发生什么。请发布一个JSON失败的例子。比你发布的内容大5倍其实并没有那么大。这可能是JSON字符串中的转义问题或结构问题。它是用stringify()创建的。不,不,我的意思是直接将对象传递给
数据:
,而不是使用任何类型的stringify。将对象传递给jQuery,它会将其转换为JSON。如果仍然失败,则可能是pix0r所说的“服务器配置问题”。@thenduks:jQuery不会将任何内容序列化为JSON。如果您传递
.ajax
一个对象,您将获得为您生成的标准
foo=1&bar=2
请求正文/查询。如果OP想要JSON,那么
JSON.stringify
是一个不错的选择。我也这么认为,但它的内容是:post_max_size=64M,即64兆字节,对吗?还要检查httpd.conf以获得
LimitRequestBody
(是的,64M==64兆字节)。我在httpd.conf中设置了“LimitRequestBody 0”(无限制),并重新启动了Apache。没有效果。还有其他想法吗?可能还有你的浏览器的局限性=)罗纳德,你能找到解决这个问题的办法吗?我正面临着完全相同的问题,尽管我的字符串在3127个字符处被截断,应该已经指定了(虽然我已经指定了):json请求是通过向html文档添加一个节点发送的。所有数据都以查询字符串形式传递。例如::数组后面有一个逗号,可能导致此错误:
…“Liberty”,“subteam”:“}],}]}]}
这是不正确的JSON。有些浏览器可以通过忽略尾随逗号进行恢复,但有些浏览器无法对其进行分析。
$strJson = file_get_contents('http://mydomain/page');
var_dump($strJson);
{"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":""}],}]}]}