Я отправляю JQuery AJAX-запрос на сервер, но консоль браузера сообщает, что страница не найдена. Тем не менее, моя подпись Spring MVC, отображающая запрошенный URL-адрес, выполняется, а часть {A {X0}} функции AJAX - нет.

Вот соответствующий код:

Javascript:

    var content = $(data).filter("#wrapper-email-content");
    $.ajax({
        url : '/sendEmail',
        type : 'POST',
        data : {
            content: content.html()
        }
    }).done(function(){
        console.log("Finished")
    });

Spring MVC Подпись:

@RequestMapping(value = "/sendEmail", method = RequestMethod.POST)
public void sendEmail(
    HttpServletRequest request, String content) {

    UserTO user = (UserTO) request.getSession().getAttribute("USER");
    String email = user.getEmail();
    String title = "Your order";
    Email.sendEmail(title, email, content, null, null, null);
}

Итак, в коде электронное письмо отправлено, это означает, что метод sendEmail выполняется, но я все еще получаю сообщение об ошибке 404: не найдено из запроса AJAX, а «Finished» не печатается в консоли.

Что я делаю не так?

4
Gustavo Amgarten 15 Дек 2015 в 15:15

3 ответа

Лучший ответ

Лучшее решение - аннотировать ваш метод

@ResponseStatus(value = HttpStatus.OK)

См. пример https://stackoverflow.com/a/12839817/954602.

1
Community 23 Май 2017 в 12:02
@RequestMapping(value = "/sendEmail",headers="Accept=application/json", method = RequestMethod.POST)
public Map<String,String> sendEmail(
    HttpServletRequest request, @RequestBody String content) {
    Map<String,String> statusMap=new HashMap<String,String>();
    UserTO user = (UserTO) request.getSession().getAttribute("USER");
    String email = user.getEmail();
    String title = "Your order";
    Email.sendEmail(title, email, content, null, null, null);
    statusMap.put("status","Mail sent successfully");
    return statusMap;
}
2
Karthika 15 Дек 2015 в 12:36

РЕДАКТИРОВАТЬ: см. Решение, опубликованное для Что вернуть, если Метод контроллера Spring MVC не возвращает значение?

Не знаком с MVC Spring, но вам, вероятно, придется самостоятельно возвращать код статуса успеха:

public String sendEmail(
    HttpServletRequest request, @RequestBody String content) {

    UserTO user = (UserTO) request.getSession().getAttribute("USER");
    String email = user.getEmail();
    String title = "Your order";
    Email.sendEmail(title, email, content, null, null, null);
    return new ResponseEntity<String>(json,HttpStatus.OK);
}
1
Community 23 Май 2017 в 11:54