【发布时间】:2015-10-18 19:48:54
【问题描述】:
我正在构建一个像这样的引导多选工具:
多选工具中选择的值首先被转换成一个javascript数组,像这样:
var authors = [];
$("#selectAuthors option:selected").each(function(i, value) {
authors.push($(this).val());
});
然后这个数组使用ajax传递给servlet:
$.ajax({
method : "POST",
url : "../addBook",
data : {
addTitle : $("#addTitle").val(),
addPublisher : $("#selectPublisher").val(),
addAuthors : JSON.stringify(authors),
}
})
而在servlet中,数组被解析为java字符串数组:
String[] authorNames = request.getParameterValues("addAuthors");
问题是,我在 servlet 中得到的 java 字符串数组并不是我想要的。例如,如果我在多选工具中选择“author1”和“author2”:
我应该得到的预期字符串数组:
{"author1", "author2"}, string length: 2
我实际得到的字符串:
{"["author1", "author2"]"}, string length: 1
如果我只在多选工具中选择一个选项,例如“作者”。在 servlet 中,我会得到这个:
Print out authorNames[0]: ["author"]
Print out authorNames[0].length: 10
//The legnth of "author" is 6, but the length of "["author"]" is 10
你能解释一下我哪里做错了吗?提前致谢。
【问题讨论】:
-
试试这个:将
JSON.stringify(authors)替换为authors.toString() -
@SheraliTurdiyev 是的,我先将“authors”解析为字符串,然后在 servlet 中使用 string.split(",") 将字符串转换为字符串数组。成功了,谢谢。
标签: javascript json ajax servlets bootstrap-multiselect