我必须向servlet发送两个数组,我使用一个发送json对象的ajax post调用,然后我必须读取java中servlet类中两个列表或数组中发送的数据。我不喜欢在ajax调用中使用jquery。我对json不是很熟悉,我使用了stackoverflow中的一些代码,我不明白在发送或解析数据时是否有问题。
下面是在javascript中进行ajax调用的方法,其中cback是回调函数,method=“post”,url是servlet的url:
function makeCall(method, url, from, to, cback) {
var req = new XMLHttpRequest();
req.onreadystatechange = function() {
cback(req)
};
req.open(method, url);
var obj = {};
obj["from"] = from;
obj["to"] = to;
var data = JSON.stringify(obj);
req.send(data);
}
下面是url指定的servlet控制器中的dopost方法。这里是我发现问题的地方:在执行getparameter之后,字符串json1和json2为空:
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//...
String json1 = request.getParameter("from");
String json2 = request.getParameter("to");
Gson gson = new Gson();
ArrayList<Double> listFrom = gson.fromJson(json1,
new TypeToken<ArrayList<Categoria>>() {}.getType());
ArrayList<Double> listTo = gson.fromJson(json2,
new TypeToken<ArrayList<Double>>() {}.getType());
//...
}
1条答案
按热度按时间wqsoz72f1#
您的ajax正在发送json,但您的servelet需要表单数据,其中包含json。
要像服务器期望的那样发送数据,请将每个数组编码为json并将其作为表单数据发送