utilizzando jQuery, sono in grado di inviare oggetti JSON dal client al server utilizzando Ajax in questo modo:Dimensione massima dell'oggetto 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
});
funziona bene. Ma se la stringa JSON diventa molto più grande (non è sicuro della dimensione esatta, ma da qualche parte circa 5 volte più grande), i dati $ _POST ricevuti dal server sono vuoti. Qualcuno sa perché?
Sto usando Apache/PHP/jquery. Succede sia da IE che da Firefox. C'è un settaggio di configurazione da qualche parte che devo regolare?
Ecco un esempio di una stringa che non riesce a fare attraverso:
{"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":""}],}]}]}
è stato creato utilizzando json.org di "stringa i":
var strJSON = JSON.stringify(oEvent);
EDIT: Indagare ulteriormente, ho cambiato il dataType in "testo" e provato a inviare una lunga stringa di numeri. Funziona fino a ~ 3500 caratteri quindi soffoca (e quando dico "choke" intendo che la richiesta arriva al server con $ $ _POST nullo)
Il mio PHP post_max_size è 64M, quindi non è così. Qualcuno ha suggerito di usare "LimitRequestBody" di Apache che non era in httpd.conf, quindi ho aggiunto "LimitRequestBody 0" ad esso e ho riavviato Apache. Neanche questo ha aiutato.
Altri suggerimenti ???
Puoi provare a fare in modo che non inizi una stringa? Come in, basta avere un oggetto JavaScript che passi al parametro 'data' della chiamata' ajax'. Guarda cosa succede. – rfunduk
Si prega di pubblicare un esempio di JSON in errore. 5 volte più grande di quello che hai postato non è poi così grande. Potrebbe essere un problema di escape o un problema di struttura nella stringa JSON. – Asaph
OK, ho appena aggiunto un esempio sopra. È stato creato con stringify(). –