web-dev-qa-db-fra.com

JQuery poste un objet JSON sur un serveur

Je crée un json qui doit être posté dans jersey, un serveur exécuté par grizzly qui possède un service Web REST récupère l'objet json entrant qui doit être généré. J'essaie, mais je ne sais pas comment le 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 en charge

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


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

Pour envoyer 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 sous la forme d'une variable post.

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

Le json sera maintenant dans le json post var.

74
Kevin B

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

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

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