2011-11-25 5 views
7

He creado una matriz JS como esta var detailsArr = new Array(); y envío algunos datos a esta matriz.Cómo enviar js array en Ajax

Ahora empujo esta matriz a través de Ajax a mi controlador de primavera como esta

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

En el lado del controlador de primavera, recibo esta matriz a través de la @RequestBody anotación. La firma del método controlador de primavera se ve así

public String submit(@RequestBody String body) 

Pero la matriz cuando se recibe en el lado del controlador primavera es básicamente una cadena de este formato

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

he dividir manualmente esta cadena para obtener los valores , este es un proceso engorroso. ¿Hay alguna forma en que pueda obtener la matriz tal como es, de modo que solo tenga que iterar sobre ella para obtener los valores?

+1

Por favor, añada la firma del método de su controlador de la primavera (con anotaciones) y un volcado de 'detailsArr' (' console.log' se o algo así) –

+0

La firma de mi controlador Spring se ve así 'public String submit (@RequestBody String body)' y el volcado de los detallesArr es así 'detailsArr [] = add & detailsArr [] = test1 & detailsArr [] = test2 y detailsArr [] = test3' – Vivek

+0

después de leer el cuerpo de la solicitud, debe obtener una cadena formateada en json, y luego debe escribir o usar un JsonUtil y convertir su cadena json en clase (matriz o lo que desee, en qué formato) – erimerturk

Respuesta

7

debe pasar su matriz al servidor en formato json. Y conviértalo usando Json al convertidor de objetos. puede usar Gson.

lado

cliente:

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

lado del servidor:

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

gracias a ton @erimerturk !! :) – Vivek

5

Al pasar a su controlador, pase así:

data:JSON.stringify(detailsArr); 

En su controlador, a continuación, puede decodificar el JSON recibido.

+0

gracias a ton xbonez !! :) – Vivek

+0

@Vivek: me alegro de haber ayudado – xbonez

Cuestiones relacionadas