如何在Servlet request.getParameter中从jQuery读取复杂的JSON对象
我正在使用jQuery创建并发送一个JSON对象,但我无法理解如何使用org.JSON.simple库在Ajax servlet中正确解析它 我的jQuery代码如下:如何在Servlet request.getParameter中从jQuery读取复杂的JSON对象,jquery,json,ajax,servlets,http-request-parameters,Jquery,Json,Ajax,Servlets,Http Request Parameters,我正在使用jQuery创建并发送一个JSON对象,但我无法理解如何使用org.JSON.simple库在Ajax servlet中正确解析它 我的jQuery代码如下: var JSONRooms = {"rooms":[]}; $('div#rooms span.group-item').each(function(index) { var $substr = $(this).text().split('('); var $name =
var JSONRooms = {"rooms":[]};
$('div#rooms span.group-item').each(function(index) {
var $substr = $(this).text().split('(');
var $name = $substr[0];
var $capacity = $substr[1].split(')')[0];
JSONRooms.rooms.push({"name":$name,"capacity":$capacity});
});
$.ajax({
type: "POST",
url: "ParseSecondWizardAsync",
data: JSONRooms,
success: function() {
alert("entered success function");
window.location = "ctt-wizard-3.jsp";
}
});
在servlet中,当我使用request.getParameterNames()并将其打印到控制台时,我会得到参数名rooms[0][key]
etcetera,但我无法以任何方式解析JSON数组rooms。我已尝试解析由request.getParameter(“rooms”)
或.getParameterValues(“rooms”)
变量返回的对象,但它们都返回空值
我在jQuery中格式化JSON数据的方式是否有问题,或者是否有一种方法可以解析servlet中缺少的JSON
请求更多的代码,尽管servlet仍然非常空,因为我无法理解如何解析数据。的
数据参数$.ajax()
使用一个表示请求参数映射的JS对象。因此,您提供给它的任何JS对象都将转换为请求参数。由于将JS对象传递给它,因此它被视为请求参数映射。您需要准确地通过其请求参数名称表示来访问各个参数
String name1 = request.getParameter("rooms[0][name]");
String capacity1 = request.getParameter("rooms[0][capacity]");
String name2 = request.getParameter("rooms[1][name]");
String capacity2 = request.getParameter("rooms[1][capacity]");
// ...
您可以通过以下方法找到它们:
通过这种方式,它可以通过request.getParameter(“rooms”)
以JSON字符串的形式提供,您可以反过来使用任意JSON API对其进行解析
与具体问题无关,对于非jQuery对象,不要在jQuery中使用$
变量前缀。这使得JS/jQuery专家更容易混淆您的代码。它只用于真正的jQuery对象,而不用于普通的字符串或原语
var $foo = "foo"; // Don't do that. Use var foo instead.
var $foo = $("someselector"); // Okay.
for (int i = 0; i < Integer.MAX_VALUE; i++) {
String name = request.getParameter("rooms[" + i + "][name]");
if (name == null) break;
String capacity = request.getParameter("rooms[" + i + "][capacity]");
// ...
}
data: { "rooms": roomsAsString }
var $foo = "foo"; // Don't do that. Use var foo instead.
var $foo = $("someselector"); // Okay.