我有一个 JSP 页面,其中我有一个按钮 onclick,我正在调用一个名为“sendmail()”的 Ajax 方法。发送邮件 API 写在控制器中。我试图在 Ajax 成功中显示一条警报消息使用 data.message 并表示数据未定义。
我尝试将控制器中的响应对象设置为成功,并将其作为字符串返回。注意:要做到这一点,我必须将我的控制器 sendmail 方法更改为 String 返回类型。所以我观察到在这种情况下 Ajax 调用不会进入成功方法。当方法类型为 void 时它工作正常。当我在 chrome 开发人员的帮助下检查,网络调用返回 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>
阿贾克斯方法:
<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>
主控制器.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();
}
我想从控制器获取响应对象到 Ajax 成功,以访问 data.message。
精慕HU
幕布斯7119047
随时随地看视频慕课网APP
相关分类