使用POST方法从Javascript获取Servlet中的JSON数据无效

使用POST方法从Javascript获取Servlet中的JSON数据无效,javascript,java,Javascript,Java,我尝试获取JSON数据,将其从Javascript发送到我的JavaPost方法。问题是,Servlet中的数据总是空的 但如果将数据写为: 数据:{Aktion:'2'} 我在Servlet中获得了参数。只是JSON数组不适合我 以下是我的JS代码: var jsonDate = { Aktion : 2, Emplid_MA: 11151154, Userid_Meister : "acstoll", Beurteilungsdatum: 2019-12-09

我尝试获取JSON数据,将其从Javascript发送到我的JavaPost方法。问题是,Servlet中的数据总是空的

但如果将数据写为:

数据:{Aktion:'2'}

我在Servlet中获得了参数。只是JSON数组不适合我

以下是我的JS代码:

var jsonDate = {
    Aktion : 2,
    Emplid_MA: 11151154,
    Userid_Meister : "acstoll",
    Beurteilungsdatum: 2019-12-09,
    Kriterium_1 : 1,
    Kriterium_2 : 3,
    Kriterium_3 : 1,
    Kriterium_5 : 4,
    Kriterium_6 : 3,
    Kriterium_7: 2,
    Einsatz_mehrere_Stationen : 1,
    ausgefuehrte_Taetigkeiten : 1,
    Weiterbeschaeftigung: 2,
    Weiterbeschaeftigung_Verbesserung : "test"
}

var json = JSON.stringify(jsonDate);

$.ajax({
    url : urlANUe + "Mitarbeiter_Einzel_Update",
    dataType : "json",
    method : "POST",
    contentType : "application/json",
    headers : {
        "Accept" : "application/json"
    },
    data: {jsonDaten:json},
    success : function(data) {
        console.log("alle MA");
        console.log(data);
    },
    error : function(xhr, status, text) {
        console.log(xhr.statusText);
        console.log(xhr.responseText);
    }
});
这是我的Servlet:

  public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


    Connection con = null;

    response.setContentType("application/json");
    response.setCharacterEncoding("UTF-8");
    response.addHeader("Access-Control-Allow-Origin", "http://localhost:8080");
    response.addHeader("Access-Control-Allow-Headers", "X-PINGOTHER, Origin, X-Requested-With, Content-Type, Accept");
    response.addHeader("Access-Control-Max-Age", "1728000");
    response.addHeader("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE");

 //This is always NULL
    String jsonStr = request.getParameter("jsonDaten");


    JSONObject jsonObj = new JSONObject(jsonStr);
    String ak = jsonObj.getString("Aktion");


    String Aktion = request.getParameter("Aktion");
[...]

}

看起来您正在传递“数据:{jsonDaten:json}”。什么是杰森达顿?只需正确地传递stringifed JSON变量“JSON”。像这样:

** var json=json.stringify(jsonDate)


**

您获得的是resest参数,而不是加载有效负载,解析是JSON

试着这样做:

JsonReader json = Json.createReader(request.getInputStream);
JsonObject jsonObj = json.readObject();
编辑
您没有指定使用哪个JSON实现,所以我使用了JavaEE中内置的实现…

问题是,我必须删除JS文件中的contentTyp。 不,它有效

JsonReader json = Json.createReader(request.getInputStream);
JsonObject jsonObj = json.readObject();