0

我有一个用 html5 和 js 编写的应用程序,它在 Json 中发送一些数据,如下所示:

"admin": {
    "id": "1",
    "username": "joninazio",
    "pass": "jotaoene",
    "idPueblo": "30"
},
"fiesta": {
    "fiesta_id": "15",
    "fiesta_nombre": "Fiestas de San Roque, Laudio",
    "fiesta_descr_en": "Festivities in honour of Saint Roch",
    "fiesta_descr_es": "Fiestas en honor a San Roque",
    "fiesta_descr_eu": "San Rokeren omenezko festak",
    "fechafiestaanyo_id": "15",
    "fechafiestaanyo_fecha_inicio": "2013-08-15",
    "fechafiestaanyo_fecha_fin": "2013-08-26",
    "dias_fiesta": [
        {
            "id": "25",
            "fecha": "2013-08-15",
            "nombre": "Txupinazo",
            "descrEn": "Our Lady's festivity",
            "descrEs": "Festividad de Nuestra Señora",
            "descrEu": "Gure Andrearen Jaieguna"
        },
        {
            "id": "26",
            "fecha": "2013-08-16",
            "nombre": "Festividad de San Roke, día del niño",
            "descrEn": "Saint Roch's festivity, children's day",
            "descrEs": "Festividad de San Roke, día del niño",
            "descrEu": "San Rokeren jaieguna, umeen eguna"
        },
        {
            "id": "27",
            "fecha": "2013-08-17",
            "nombre": "Festividad de San Rokezar, día del Joven de Ayer",
            "descrEn": "Saint Rokezar's festivity, former youth's day",
            "descrEs": "Festividad de San Rokezar, día del Joven de Ayer",
            "descrEu": "San Rokezar jaieguna, atzoko gaztearen eguna"
        },
        {
            "id": "28",
            "fecha": "2013-08-18",
            "nombre": "Descanso",
            "descrEn": "Rest day",
            "descrEs": "Descanso",
            "descrEu": "Atseden eguna"
        },
        {
            "id": "29",
            "fecha": "2013-08-19",
            "nombre": "Descanso",
            "descrEn": "Rest day",
            "descrEs": "Descanso",
            "descrEu": "Atseden eguna"
        },
        {
            "id": "30",
            "fecha": "2013-08-20",
            "nombre": "Descanso",
            "descrEn": "Rest day",
            "descrEs": "Descanso",
            "descrEu": "Atseden eguna"
        },
        {
            "id": "31",
            "fecha": "2013-08-21",
            "nombre": "Descanso",
            "descrEn": "Rest day",
            "descrEs": "Descanso",
            "descrEu": "Atseden eguna"
        },
        {
            "id": "32",
            "fecha": "2013-08-22",
            "nombre": "Día de Ajos",
            "descrEn": "Garlic's day",
            "descrEs": "Día de Ajos",
            "descrEu": "Berakatz eguna"
        },
        {
            "id": "33",
            "fecha": "2013-08-23",
            "nombre": "Día de las cuadrillas",
            "descrEn": "Gangs' day",
            "descrEs": "Día de las cuadrillas",
            "descrEu": "Kuadrilen eguna"
        },
        {
            "id": "34",
            "fecha": "2013-08-24",
            "nombre": "Baserritarraren eguna",
            "descrEn": "Farmer's day",
            "descrEs": "Día del baserritarra",
            "descrEu": "Baserritarraren eguna"
        },
        {
            "id": "35",
            "fecha": "2013-08-25",
            "nombre": "Día de las morcillas",
            "descrEn": "Black pudding's day",
            "descrEs": "Día de las morcillas",
            "descrEu": "Odolkien eguna"
        },
        {
            "id": "36",
            "fecha": "2013-08-26",
            "nombre": "Día de la cofradía, día de Roketxu",
            "descrEn": "Brotherhood's day, Roketxu's day",
            "descrEs": "Día de la cofradía, día de Roketxu",
            "descrEu": "Senidetasunaren eguna, Roketxuren eguna"
        }
    ],
    "actos": [
        {
            "id": "1374770783430",
            "fecha": "2013-08-15",
            "nombreEn": "Txupinazo",
            "nombreEs": "Txupinazo",
            "nombreEu": "Txupinazo",
            "descEn": "Txupinazo",
            "descEs": "Txupinazo",
            "descEu": "Txupinazo",
            "horaInicio": "12:00",
            "horaFin": "13:00",
            "lat": "43.143194",
            "lon": "-2.962405100000069"
        },
        {
            "id": "1374770874134",
            "fecha": "2013-08-15",
            "nombreEn": "Pasacalles",
            "nombreEs": "Pasacalles",
            "nombreEu": "Pasacalles",
            "descEn": "Pasacalles",
            "descEs": "Pasacalles",
            "descEu": "Pasacalles",
            "horaInicio": "13:00",
            "horaFin": "14:00",
            "lat": "43.1434506",
            "lon": "-2.9579896999999846"
        }
    ]
}

}

这个 Json 数据将被基于 Jersey 的 Restfull Web 服务捕获。

Ajax 调用如下:

var theUrl = "...";
$.ajax({        

        url: theUrl,
        type: "POST",
        data: jsonFiesta,
        dataType: "json",
        contentType: "application/json; charset=utf-8", 
        complete: function (data){
            //Redireccionar a la página principal de nuevo:
            alert("Ok!!");
            //window.location.replace("./home.html");
        }
});

Web服务的方法是:

@POST

@Path("/uploadFiesta")

@Consumes("application/json")

@Produces("application/x-javascript")

public JSONWithPadding uploadFiesta(@QueryParam("callback") String callback,
        String json){

    System.out.println("****vamos a subir esta fiesta");

    boolean bien = false;

    try {
        System.out.println(json);
        bien = new AccessManager().uploadFiesta(new JSONObject(json));

    } catch (Exception e) {
        e.printStackTrace();
    }
    GsonBuilder gb = new GsonBuilder().serializeNulls().setPrettyPrinting(); 
    Gson gson = gb.create();

    ReturningClass<Object> c = new ReturningClass<Object>(true);
    c.setData_boolean(bien);
    return new JSONWithPadding(gson.toJson(c), callback);
}

我做错了什么?

我已经通过 Ajax 进行了几次 GET 调用,这些调用有效:

阿贾克斯:

jQuery.ajax({

                    url: theUrl,
                    type: "GET",
                    dataType: "jsonp",
                    cache: false,
                    async: false,
                    crossDomain: true,
                    jsonp: true,
                    jsonpCallback: "callback",
                    contentType: "application/json; charset=utf-8",
                    error: function (xhr,err) {
                        alert("Error al identificar usuario: " + xhr + "' '" + err);
                    },
                    success: function (data){

                        if(data.response){
                            $("#statusLogin").removeAttr("class");
                            $("#statusLogin").remove();
                            $("#userLoginV").removeAttr("class");
                            $("#userLoginV").removeAttr("value");
                            $("#passLoginV").removeAttr("class");
                            //alert("Se ha identificado satisfactoriamente " + data.object.nombreUsuario);

                            //Inicializar la base de datos de fiestas:
                            //initDb();

                            //Guardar datos en la sesion:
                            login(data.object);

                            //Entramos al home.html
                            window.location.replace("./home.html");

                        }else{
                            $("#userLoginV").attr("class", "error");
                            $("#passLoginV").attr("class", "error");
                            $("#statusLogin").attr("class", "alert alert-error");
                            $("#statusLogin").append("<h4>Error al identificar</h4><p>El usuario y/o la contraseña no son correctas.</p>")
                            alert("Error al identificar usuario. Inténtalo otra vez");
                        }
                    }

                });

网络服务:

@GET

@Path("login/{user}/withPass/{pass}")

@Produces("application/x-javascript")

public JSONWithPadding loginAdministradorFiestas(
        @QueryParam("callback") String callback,
        @PathParam("user") String user,
        @PathParam("pass") String pass
        ){

    System.out.println("***Vamos a tratar de identificar un usuario: ");

    AdministradorFiestas admin = null;
    String resultado = "";
    try {

        admin = new AccessManager().loginAdministradorFiestas(user, pass);
        System.out.println("***Peticion hecha para login!!");
        GsonBuilder gb = new GsonBuilder().serializeNulls().setPrettyPrinting(); 
        Gson gson = gb.create();

        ReturningClass<AdministradorFiestas> ret = new ReturningClass<AdministradorFiestas>(true, admin);
        resultado = gson.toJson(ret);

    } catch (Exception e) {
        e.printStackTrace();
    }

    return new JSONWithPadding(resultado, callback);

}

为什么 POST 不起作用?

提前致谢

4

0 回答 0