Почему строка со специальными символами ведет себя по-разному в методах GET и POST? - PullRequest
0 голосов
/ 22 мая 2019

Используя 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 (бэкэнд) этоотображается следующим образом:

enter image description here

Я получаю неожиданные строки в конце.В чем причина такого поведения ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...