使用POST方法从Javascript获取Servlet中的JSON数据无效
我尝试获取JSON数据,将其从Javascript发送到我的JavaPost方法。问题是,Servlet中的数据总是空的 但如果将数据写为: 数据:{Aktion:'2'} 我在Servlet中获得了参数。只是JSON数组不适合我 以下是我的JS代码:使用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
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();