Как извлечь json из javascript и передать сервлету и создать класс из данных - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть форма редактирования пользователя, и когда я отправляю, я вызываю сервлет EditMain. У меня есть этот javascript файл, из которого я получаю данные.

$(document).on("click","#main",function(){
    // Пример за заявка POST:
    postData('http://localhost:8080/javabeans/EditMain', toJSONString(document.forms[0]))
      .then((data) => {
        console.log(data); 
      });
});
async function postData(url = 'http://localhost:8080/javabeans/edit_profile.jsp', data = {}) {
      const response = await fetch(url, {
        method: 'POST',
        mode: 'cors',
        cache: 'no-cache',
        credentials: 'same-origin', 
        headers: {
          'Content-Type': 'application/json'
        },
        redirect: 'follow',
        referrerPolicy: 'no-referrer',
        body: data
      });
      return response.json();
}

   function toJSONString( form ) {
        var obj = {};
        var elements = form.querySelectorAll( "input, select, textarea" );
        for( var i = 0; i < elements.length; ++i ) {
            var element = elements[i];
            var name = element.name;
            var value = element.value;

            if( name ) {
                obj[ name ] = value;
            }
        }

        return JSON.stringify( obj );
    }

это мой класс сервлета, где я получаю nullpointerException когда я вызываю функцию из Json

    response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        Gson gson = new Gson();
        String requestData = request.getReader().lines().collect(Collectors.joining());
        out.println(requestData);
        User u = gson.fromJson(requestData, User.class);
        out.println(u.getName());

и вижу в консоли, что я получаю ответ, но не в формате json. Что я получаю, это

name=asd&job=asd&description=asdasdsa%09%09%09%09%09%09Some+long+description.............%0D%0A%0D%0A%09%09%09%09%09

1 Ответ

0 голосов
/ 25 апреля 2020

Похоже, что ответ не текст json.

try

response.setContentType("application/json");

not

response.setContentType("text/html;charset=UTF-8");

Подобное можно увидеть здесь: Servlet возвращая ответ как HTML вместо JSON

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