2011-11-25 10 views
7

Ho creato un array JS come questo var detailsArr = new Array(); e spingo alcuni dati in questo array.Come inviare array js in Ajax

Ora ho spingere questo array tramite Ajax al mio controller Spring Ti piace questa

$.ajax({ 
      type: "POST", 
      url: "submit", 
      data: ({detailsArr : detailsArr }), 
      success: function(html){ 
       alert("Submitted"); 
       } 
      }); 

Sul lato controller Primavera, ricevo questo array attraverso la @RequestBody annotazione. La firma del metodo di controllo primavera si presenta così

public String submit(@RequestBody String body) 

Ma la matrice quando ha ricevuto sul lato controller primavera è fondamentalmente una stringa di questo formato

detailsArr[]=add&detailsArr[]=test1&detailsArr[]=test2&detailsArr[]=test3 

devo dividere manualmente questa stringa per ottenere i valori , questo è un processo ingombrante. C'è un modo in cui posso ottenere l'array così com'è, quindi devo solo iterare su di esso per ottenere i valori.

+1

Si prega di aggiungere la firma del metodo dal vostro controller di primavera (con annotazioni) e un dump di 'detailsArr' (' console.log' esso o qualcosa del genere) –

+0

La firma del mio controller Spring assomiglia a questo 'public String submit (@RequestBody String body)' e il dump dei dettagliArr è come questo 'detailsArr [] = add & detailsArr [] = test1 & detailsArr [] = test2 & detailsArr [] = test3' – Vivek

+0

dopo aver letto il corpo della richiesta, si dovrebbe ottenere una stringa formattata in json, e poi si dovrebbe scrivere o usare un JsonUtil e convertire la stringa json in classe (array o cosa vuoi, quale formato) – erimerturk

risposta

7

si dovrebbe passare l'array al server in formato json. E convertirlo utilizzando il convertitore JSON to object. puoi usare Gson.

lato

client:

$.ajax({ 
      type: "POST", 
      url: "submit", 
      data:JSON.stringify(detailsArr), 
      success: function(html){ 
       alert("Submitted"); 
       } 
      }); 

lato server:

public String submit(@RequestBody String body){ 
//convert body to array using JSONLib, FlexJSON or Gson 
} 
+0

grazie a una tonnellata @erimerturk !! :) – Vivek

5

Quando si passa al tuo controller, passano in questo modo:

data:JSON.stringify(detailsArr); 

Al controller, è possibile decodificare il JSON ricevuto.

+0

grazie a una tonnellata xbonez !! :) – Vivek

+0

@Vivek: felice di aver aiutato – xbonez

Problemi correlati