Используя jQuery, я пытаюсь сохранить свой строковый массив в бэкэнде, и мой подход следующий.
1.Использование jQuery ajax для отправки массива.
var tagTexts = $(ul li.select2-selection__choice")
.toArray()
.map(function(i){
return i.innerText;
});
tagTexts = JSON.stringify(tagTexts);
$.ajax({
type: 'POST' ,
url: '/tag/tagList',
dataType: 'json',
data: {
tagTexts: tagTexts
},
error: function(err) {
console.log(err);
},
success: function(response) {
//Process Response
}
});
2.В бэкэндеэто получается следующим образом:
@ResponseBody
@RequestMapping(value = "/tag/tagList", method = RequestMethod.POST)
public String saveTagList(HttpServletRequest request,
@RequestParam(value = "searchTagTexts", required = false)String tagListString) {
try
{
List<String> tagTexts = (List<String>)mapper.readValue(tagListString, new TypeReference<List<String>>() {});
System.out.println(tagTexts);
String response = tagService.saveTags(tagTexts);
return response;
} catch (JsonGenerationException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
В этом сценарии все работает нормально.
Попытка того же сценария с опцией GET:
Я пробовал вышеупомянутый сценарий, используя опцию GET
(например, добавление типа: 'GET' в вызове ajax и метод установки= RequestMethod.GET в аннотации @RequestMapping).
Следующим будет значение tagTexts при выполнении вызова ajax:
"["Drone", "Richard Feynman, PHD", "Yatch","Tik—Tok"]"
В выполнении Java (бэкэнд) этоотображается следующим образом:
Я получаю неожиданные строки в конце.В чем причина такого поведения ??