У меня есть страница JSP, на которой у меня есть кнопка, по нажатию которой я вызываю метод Ajax под названием «sendmail ()». И API отправки почты написан на контроллере. Я пытаюсь показать предупреждение в Ajax успех с data.message и говорит, что данные не определены.
Я попытался установить объект ответа в контроллере со строкой сообщения как успешный и вернуть его как строку.
Примечание: чтобы сделать это, я должен изменить метод sendmail моего контроллера на тип возвращаемого значения String. Так что я заметил, что вызовы Ajax не входят в метод успеха в этом случае. Он работает нормально, когда метод имеет тип void. И когда я проверено с помощью chrome developer tolld, сетевой вызов возвращает 404 (не найдено). Почта успешно отправляется, но успех ajax не работает.
Это моя кнопка и метод Ajax,
<div class="uk-width-large-2-5">
<div class="uk-form-row">
<label>Message</label>
<textarea id="message" cols="30" rows="4" class="md-input"></textarea>
</div>
<div class="uk-form-row">
<button type="submit" class="md-btn md-btn-success md-btn-large" onclick="sendMail()">Send Message</button>
</div>
</div>
Метод Ajax:
<script>
function sendMail() {
var reqJson = {};
reqJson.msg = $("#message").val();
$.ajax({
type : "POST",
url : "sendMail",
data : JSON.stringify(reqJson),
dataType: 'json',
contentType: "application/json",
success : function(data) {
console.log("data :"+data.message);
}
error: function()
{
}
});
}
</script>
Maincontroller.java
@RequestMapping(value = "/sendMail", method = RequestMethod.POST, produces = "application/json")
public void sendContact(HttpServletRequest request, HttpServletResponse response, @RequestBody String payload) {
JSONObject jRespObj = new JSONObject();
try {
System.out.println("Welcome");
JSONObject jPayload = new JSONObject(payload);
System.out.println("jobj : "+jPayload);
String message = jPayload.getString("msg");
InputStream inputStream = UserController.class.getResourceAsStream("/Contactusrequest.htm");
StringWriter writer = new StringWriter();
try {
IOUtils.copy(inputStream, writer);
} catch (IOException e) {
e.printStackTrace();
}
HttpSession session = request.getSession(true);
String from = (String) session.getAttribute("email");
String to ="xyz@abc.com";
String emailContent = writer.toString();
emailContent = emailContent.replace("replaceMeFromEmail",from);
emailContent = emailContent.replace("replaceMeToEmail", to);
emailContent = emailContent.replace("replaceMeReason", message);
emailClient.sendMail("", to, null, "Contact Us Request", emailContent);
jRespObj.put("message", "Mail sent successfully");
response.setStatus(HttpServletResponse.SC_OK);
} catch (Exception ex) {
ex.printStackTrace();
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
}
return jRespObj.toString();
}
Я хочу получить объект ответа от контроллера для успешного выполнения Ajax, чтобы получить доступ к data.message.