2012-04-21 11 views
11

Il mio obiettivo generale è ottenere tutti i menu a discesa di una pagina e inviarli per essere elaborati da un file php.L'invio di un array di oggetti come dati postassoluto?

In questo momento, il modo in cui lo sto facendo in jQuery è creare una matrice di pianificazione generale e quindi aggiungere ogni elemento da aggiornare a tale array. Quindi ho qualcosa tipo:

var schedule = []; 
var data = { 
    'user_id' : '12', 
    'day_of_week' : 'Monday', 
    'when' : 'start', 
    'time' : '12 AM' 
} 
schedule.push(data); 
var data = { 
    'user_id' : '13', 
    'day_of_week' : 'Tuesday', 
    'when' : 'end', 
    'time' : '12 AM' 
} 
schedule.push(data); 
// schedule would have two objects in it 

Ovviamente in loop e roba.

Quindi, la mia matrice di pianificazione ha due oggetti, in questo caso.

Ora, è possibile utilizzare tale matrice di pianificazione come dati Ajax? Non funziona se faccio qualcosa di simile:

$.ajax({ 
    url: 'http://something.com/ajax', 
    data: schedule, 
    type: 'POST' 
}); 

Ma se invece cambio a schedule[0] funziona bene, ma solo per la prima cosa nella matrice calendario, ovviamente.

+0

Rimuovere il '' ..schedule è una variabile, non una stringa. Anche jQuery codificherà il tuo array come un oggetto JSON che dovrai decodificare sul server. – gpasci

+1

A meno che non mi sbagli, Schedule non è una matrice di matrici. È una matrice di oggetti, dato che 'data' è un oggetto. – xbonez

+0

Qualsiasi motivo specifico per cui non stai usando 'type: 'JSON''? –

risposta

3

Assicurarsi di utilizzare la versione corretta di jQuery. Nelle versioni precedenti, dovevi passare una puntura; le nuove versioni utilizzano "congettura intelligente" sulla variabile data. Puoi dire esplicitamente a jQuery che stai passando un oggetto javascript con il parametro dataType oppure puoi lasciare che jQuery lo trovi.

Documentazione

jQuery.ajax() - http://api.jquery.com/jQuery.ajax/

2

passarla come JSON:

$.ajax({ 
    url: 'http://something.com/ajax', 
    data: {schedule: schedule}, 
    type: 'POST', 
    dataType: 'JSON' 
}); 

Sarebbe inviare una stringa JSON codificata al server, quali lingue lato server in grado di analizzare. (in PHP, è fatto con json_decode()).

+1

Cosa sto passando a json_deocde()? $ _POST ['pianificazione']? – Ben

+0

@ Ben: Sì. 'schedule' sarà costituito dalla stringa JSON. – xbonez

+0

In ogni caso, continuo a non ricevere nulla. Ho provato a fare 'type: 'POST'' e' type:' JSON'' con entrambe le combinazioni di dati e continuo ad ottenere un valore nullo. Cosa potrebbe essere sbagliato? Se faccio un 'console.log (pianificazione)' prima della parte ajax, posso vedere tutti i miei oggetti così so che sono lì. – Ben

11

L'attributo data deve essere un oggetto.

Che cosa si può fare è questo:

$.ajax({ 
    url: 'http://something.com/ajax', 
    data: {schedule: schedule}, 
    type: 'POST' 
}); 

Quindi, se si riceve questo, per esempio in PHP hai $_POST["schedule"]. Questo è esattamente lo stesso che avevi in ​​JavaScript.

Ohh sì, ho dimenticato ... dare anche un'occhiata a .serialize() e .serializeArray()!

+0

L'attuale documento jQuery afferma che può essere un oggetto, una stringa o un array. –

Problemi correlati