400 плохих запросов, есть ли проблемы с кодом в контроллере? - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь отправить данные на контроллер через ajax, но столкнулся с проблемой Не удалось загрузить ресурс: сервер ответил со статусом 400 (неверный запрос). Я не знаю, какая часть проблемы

JS:

var info ={
        "questions":{"q1":trim(q1), "q2":trim(q2),"q3":trim(q3),"q4":trim(q4),"q5":trim(q5),"q6":trim(q6),"q7":trim(q7),"q8":trim(q8)},
        "answers":{"datetimepicker":datetimepicker,"sexual":sexual,"nation":nation, "province":province,"city":city, "sheng":sheng,"shi":shi,"xian":xian, "height":height,"weight":weight}
    };
    var info_str = JSON.stringify(info);
$.ajax({
    type:'GET',
    data:info_str,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    url :'/yiban',
    success :function(data) {
        alert(data);
    },
    error :function(e) {
        alert("error");
    }
});

Java:

 @RequestMapping(value = "/yiban", method = RequestMethod.GET)
    public void yiban(HttpServletRequest request)
    {
        String jsonStr = request.getParameter("info_str");
        JSONObject questions = JSONObject.fromObject(jsonStr).getJSONObject("questions");
        JSONObject answers = JSONObject.fromObject(jsonStr).getJSONObject("answers");
        String q1 = questions.getString("q1");
        String ans = answers.getString("nation");
        System.out.println(q1);
    }

1 Ответ

0 голосов
/ 17 апреля 2019
@RequestMapping(value = "/yiban", method = RequestMethod.POST)
    public void yiban(HttpServletRequest request) throws IOException {
        //GET method parameter is passed with url  ,  json  data can't go with url. json or xml is passed  in request boy
//        String jsonStr = request.getParameter("info_str"); 
        ServletInputStream inputStream = request.getInputStream();
        String  jsonStr=StreamUtils.copyToString(inputStream, Charset.forName("UTF-8"));
        JSONObject questions = JSONObject.fromObject(jsonStr).getJSONObject("questions");
        JSONObject answers = JSONObject.fromObject(jsonStr).getJSONObject("answers");
        String q1 = questions.getString("q1");
        String ans = answers.getString("nation");
        System.out.println(q1);
    }

Выше мой код, который работает в моем проекте. Во-первых, используйте POST для отправки json или xml! и используйте request.getInputStream для получения данных json! Во-вторых, вы RequestMappingMethod ничего не возвращает, ваш веб-интерфейс ничего не получает!
Какой вид вы хотите вернуть на фронт?

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