gpt4 book ai didi

java - AJAX 调用失败时出现未定义的 Javascript 错误

转载 作者:行者123 更新时间:2023-11-30 10:55:37 34 4
gpt4 key购买 nike

我有一个由 AJAX 调用并返回 JSON 的 Spring MVC Controller 。如果调用成功且没有错误,我将返回一 strip 有键“message”的字符串消息。同样,如果捕获到异常,我也会返回一个带有键“message”的字符串错误。我还返回一个 HTTP 错误响应。

在我的 Javascript 中,我在警报中输出了这条“消息”。警报会在调用成功时显示消息。如果调用不成功,我会收到“数据未定义”的 Javascript 错误。

  1. 为什么“数据”在成功时可访问,但在调用失败时不能访问,我需要进行哪些更正才能使其正常工作?
  2. 我是使用 Spring 进行 AJAX 调用的新手,因此欢迎并感谢对我的解决方案提出任何一般性反馈/批评。

注意在我通过修改 DOM 正确提供用户反馈之前,Javascript 中的警报和消息本身是虚拟实现。

Controller

@RequestMapping(value = "/getMovieData", method = RequestMethod.POST, produces = "application/json")
@ResponseBody
public Map<String, Object> getMovieData(@RequestBody Map<String, Object> json, HttpServletResponse response) {

String movieId = json.get("id").toString();

Map<String, Object> rval = new HashMap<String, Object>();

try {
Movie movie = movieService.getMovieData(movieId);
rval.put("message", "You have succeeded");
rval.put("movie", movie);
} catch (Exception e) {
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
rval.put("message", "You have an error - " + e.getMessage());
}

return rval;

}

Javascipt

function getMovieData(data) {

var request = $.ajax({

type : 'POST',
url : '<c:url value="/getMovieData" />',
dataType : "json",
contentType : "application/json; charset=utf-8",
data : data,

});

request.done(function(data) {
alert("Success: " + data.message);
populateMovieFields(data.movie);
});

request.fail(function(xhr, status, error, data) {
alert("status: " + status);
alert("error: " + error);
alert("Fail: " + data.message);
});

}

最佳答案

JSON 响应在作为第一个参数传递的 jqXHR 对象中可用。

request.fail(function(jqXHR, textStatus, errorThrown) {
alert("Fail: " + jqXHR.responseJSON.message);
});

关于java - AJAX 调用失败时出现未定义的 Javascript 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33293229/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com