的
data参数
$.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]");// ...您可以通过
HttpServletRequest#getParameterMap()方法找到它们:
Map<String, String[]> params = request.getParameterMap();// ...
您甚至可以如下动态收集所有参数:
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]"); // ...}如果您打算将其作为真实的JSON对象传递,以便可以使用JSON解析器将其进一步分解为属性,则必须
String在使用JS /
jQuery发送之前将其转换为,并指定
data参数,如下所示:
data: { "rooms": roomsAsString }这样,它就可以作为JSON字符串使用
request.getParameter("rooms"),您可以通过该字符串进而使用任意JSON API进行解析。与 具体问题 无关 ,请勿
$在jQuery中为非jQuery对象使用变量前缀。这使您的代码对JS /
jQuery专家更加混乱。仅将其用于真正的jQuery对象,而不能用于普通的香草字符串或基元。
var $foo = "foo"; // Don't do that. Use var foo instead.var $foo = $("someselector"); // Okay.


