我正在尝试处理来自 jQuery 的 ajax 调用的响应主体,但到目前为止还没有成功。
这是我的 jQuery 代码:
function doAjaxClosedStatus(url, requestId, closedStatusId) {
$.ajax({
type: "POST",
url : url+requestId,
data : ({
'closedStatusId' : closedStatusId
})
}).success(function(msg) {
alert(msg);
if (msg == "fail") {
alert("test");
$(document).append($('<div class="alert alert-error affix" data-offset-top="200">You can\'t specify a closed status if status is not set as "closed"</div>'));
$('option:selected', '.closedStatus ').removeAttr('selected');
$('.closedStatus option:first-child').prop('selected', 'selected');
}
});
}
因此,整个呼叫和服务器端处理就像一个魅力一样工作,并在一切正常或错误时分别以“完成”或“失败”响应(我知道你猜对了)。现在我想在响应失败时进行一些客户端处理,但alert(msg)
从未触发......我做错了什么?
编辑:我忘了说,我使用 Spring MVC 作为后端,我只是返回“失败”为@ResponseBody
. 当我检查网络流时,响应正文是“失败”或“完成”。
EDIT2:我尝试过:
$.ajax({
type: "POST",
url : url+requestId,
data : ({
'closedStatusId' : closedStatusId
}),
success:function(msg) {
alert(msg);
if (msg == "fail") {
alert("test");
$(document).append($('<div class="alert alert-error affix" data-offset-top="200">You can\'t specify a closed status if status is not set as "closed"</div>'));
$('option:selected', '.closedStatus ').removeAttr('selected');
$('.closedStatus option:first-child').prop('selected', 'selected');
}
}
});
还是没有成功...
EDIT3:所以我一直在尝试这个:
function doAjaxClosedStatus(url, requestId, closedStatusId) {
$.ajax({
type: "POST",
url : url+requestId,
data : ({
'closedStatusId' : closedStatusId
}),
success:function(msg) {
alert(msg);
if (msg == "fail") {
alert("test");
$(document).append($('<div class="alert alert-error affix" data-offset-top="200">You can\'t specify a closed status if status is not set as "closed"</div>'));
$('option:selected', '.closedStatus ').removeAttr('selected');
$('.closedStatus option:first-child').prop('selected', 'selected');
}
}
});
}
出于某种原因,它现在确实有效。也许那是因为我的浏览器缓存没有被清空,因此可以使用旧版本的脚本。无论如何,现在这工作正常。除了我的 DOM 操作,但这不属于问题本身,所以主题已关闭!感谢大家!