2012-04-11 22 views
35

Creo un json que se debe publicar en jersey, un servidor que ejecuta grizzly que tiene un servicio web REST obtiene un objeto json entrante que necesita ser superado. Estoy intentando pero no estoy seguro de cómo implementar esto correctamente.JQuery publicar objeto JSON en un servidor

import java.io.IOException; 
import java.io.InputStream; 

import net.sf.json.JSONObject; 
import net.sf.json.JSONSerializer; 

import org.apache.commons.io.IOUtils; 

import javax.ws.rs.*; 

    @Path("/helloworld") 
    public class GetData { 
     @GET 
     @Consumes("application/json") 
     public String getResource() { 

      JSONObject obj = new JSONObject(); 
      String result = obj.getString("name"); 

      return result;  
     }     

    } 

Tengo un archivo HTML que se ejecuta este método, mientras que onload

function sendData() { 
     $.ajax({ 
       url: '/helloworld', 
       type: 'POST', 
       contentType: 'application/json', 
       data: { 
        name:"Bob", 


       }, 
       dataType: 'json' 
      }); 
      alert("json posted!"); 
     }; 

Respuesta

64

Para enviar JSON al servidor, primero tiene que crear JSON

function sendData() { 
    $.ajax({ 
     url: '/helloworld', 
     type: 'POST', 
     contentType: 'application/json', 
     data: JSON.stringify({ 
      name:"Bob", 
      ... 
     }), 
     dataType: 'json' 
    }); 
} 

Esta es la forma en que lo haría estructurar la solicitud ajax para enviar el json como una publicación var.

function sendData() { 
    $.ajax({ 
     url: '/helloworld', 
     type: 'POST', 
     data: { json: JSON.stringify({ 
      name:"Bob", 
      ... 
     })}, 
     dataType: 'json' 
    }); 
} 

El JSON ahora estará en el puesto json var.

+0

Gracias! Todavía estoy averiguando cómo el servidor obtiene el objeto json. – nihulus

+0

Cuando se envía de esta manera, el json será el cuerpo de la solicitud. Si, en cambio, desea que json esté en una POST var, la solicitud de ajax deberá modificarse. –

+0

Pero, ¿y si quiero oponerme a Json como tal? es decir, supongamos que tengo JSONObject creado utilizando jsp y quiero pasar a la página siguiente y luego cómo enviar JSONObject (jsonobj) en jquery POST –

0

También es posible usar FormData(). Sin embargo, es necesario establecer contentType como false:

var data = new FormData(); 
data.append('name', 'Bob'); 

function sendData() { 
    $.ajax({ 
     url: '/helloworld', 
     type: 'POST', 
     contentType: false, 
     data: data, 
     dataType: 'json' 
    }); 
} 
Cuestiones relacionadas