usando jQuery, soy capaz de enviar objetos JSON del cliente al servidor usando AJAX como esta:Tamaño máximo del objeto 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
});
funciona bien. Pero si la cadena JSON es mucho más grande (no estoy seguro del tamaño exacto, pero alrededor de 5 veces más grande), los datos $ _POST recibidos por el servidor están vacíos. ¿Alguien sabe por qué?
Estoy usando Apache/PHP/jquery. Sucede desde IE y Firefox. ¿Hay algún ajuste de configuración en algún lugar que deba ajustar?
He aquí un ejemplo de una cadena que no puede hacerlo a través de:
{"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":""}],}]}]}
es creado usando json.org de "stringify":
var strJSON = JSON.stringify(oEvent);
EDIT: Al investigar más, me cambió el tipo de datos a "texto" y trató de enviar una larga cadena de números. Funciona hasta ~ 3500 caracteres y luego se estrangula (y cuando digo "estrangular" me refiero a que la solicitud llega al servidor con un nulo $ _POST.)
Mi PHP post_max_size es 64M, eso no es todo. Alguien sugirió usar "LimitRequestBody" de Apache, que no estaba en httpd.conf, así que agregué "LimitRequestBody 0" y reinicié Apache. Eso tampoco ayudó.
¿Alguna otra sugerencia?
¿Puedes probar y no tener una cuerda para comenzar? Como en, solo tiene un objeto JavaScript que pasa al parámetro 'data' de la llamada' ajax'. Mira qué pasa. – rfunduk
Por favor, publique un ejemplo de falla de JSON. 5 veces más grande que lo que has publicado no es tan grande. Puede ser un problema de escape o problema de estructura en la cadena JSON. – Asaph
Muy bien, acabo de agregar un ejemplo anterior. Se crea con stringify(). –