40 votes

JQuery envoie un objet JSON à un serveur

Je crée un json qui doit être posté dans jersey, un serveur exécuté par grizzly qui a un webservice REST reçoit un objet json entrant qui doit être sorti. Je fais un essai mais je ne suis pas sûr de la façon de mettre en œuvre correctement.

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;      
        }                   

    } 

J'ai un fichier html qui exécute cette méthode lors du chargement.

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

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

78voto

Kevin B Points 57721

Pour envoyer du json au serveur, vous devez d'abord créer json

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

Voici comment structurer la requête ajax pour envoyer le json en tant que post var.

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

Le json sera maintenant dans le json post var.

3voto

user12287 Points 311

Il est également possible d'utiliser FormData() . Mais vous devez définir contentType como false :

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

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X