2012-01-17 17 views
152

Possible Duplicate:
Serializing to JSON in jQuery

voglio inviare una matrice come una richiesta Ajax:

info[0] = 'hi'; 
info[1] = 'hello'; 

$.ajax({ 
    type: "POST", 
    url: "index.php", 
    success: function(msg){ 
    $('.answer').html(msg); 
    } 
}); 

Come posso fare questo?

+0

soluzione qui: http://stackoverflow.com/questions/713884/convert-js-array-to-json-object-for-use-with-jquery-ajax – Z4k4r14

+0

tipo: 'POST', url: dati '/ url/action /', : {param1: 1, id: "text"}, dataType: 'text', – Paul

risposta

197
info = []; 
info[0] = 'hi'; 
info[1] = 'hello'; 


$.ajax({ 
    type: "POST", 
    data: {info:info}, 
    url: "index.php", 
    success: function(msg){ 
    $('.answer').html(msg); 
    } 
}); 
+9

sì ... che ha funzionato..grazie..una cosa in più può essere fatta ... cioè inizializza ** info = {}; ** then ** data: info, ** –

+1

invia 0 = ciao e 1 = ciao, funzionerà? dipende dal tuo codice lato server. info = {} è un oggetto semplice in Javascript. info = [] è un oggetto array. – Diode

+0

Come lo faresti se vuoi 'info = arrayasvalues' invece di ogni chiave è un parametro? –

52

Basta utilizzare il metodo JSON.stringify e farla passare attraverso come il parametro "dati" per la funzione di $ .ajax, come segue:

$.ajax({ 
    type: "POST", 
    url: "index.php", 
    dataType: "json", 
    data: JSON.stringify({ paramName: info }), 
    success: function(msg){ 
     $('.answer').html(msg); 
    } 
}); 

Hai solo bisogno di fare in modo di includere i JSON2.js file nella pagina di ...

+0

Ho bisogno di aggiungere 'JSON.stringify (...)' Grazie per l'assistenza! – ChaseHardin

+0

Nel mio caso, la mappa valore-chiave richiesta era errata con il codice precedente. Ho modificato la riga "dati" in: data: {paramName: JSON.stringify (informazioni)}, – Shogg

8

Dal momento che si sta utilizzando jQuery si prega di utilizzare la funzione è seralize per serializzare i dati e poi passarlo nel parametro dei dati di chiamata AJAX:

info[0] = 'hi'; 
info[1] = 'hello'; 

var data_to_send = $.serialize(info); 

$.ajax({ 
    type: "POST", 
    url: "index.php", 
    data: data_to_send, 
    success: function(msg){ 
     $('.answer').html(msg); 
    } 
}); 
+1

Questo non è il vero, almeno non oggi. jQuery in realtà non serializza automaticamente qualsiasi array. Quando ho provato con un semplice array di numeri interi, ha mantenuto solo l'ultimo elemento. Per favore, controlla questo post per ulteriori spiegazioni: http://stackoverflow.com/a/4239496/261332 – userfuser

+0

Grazie @userfuser Ho aggiornato la risposta e rimosso la parte di serializzazione automatica. – BlackDivine

+11

in che modo ha così tanti voti? Non esiste alcuna funzione jQuery come 'jQuery.serialize()'. C'è '.serialize()' ma è pensato per essere usato su un insieme di elementi del modulo. Prova questo codice e otterrai solo "TypeError: $ .serialize is not a function" – billynoah