【发布时间】:2014-12-18 12:42:16
【问题描述】:
所以我的视图中有一个表,并在以下脚本的帮助下将 ajax 数据发送到更新我的数据库的控制器:
$('.save-table').on('click', function () {
var tr = $(this).parents('tr:first');
var PredefName = tr.find("#PredefName").val();
var PredefDescription = tr.find("#PredefDescription").val();
var PredefID = tr.find("#PredefID").html();
tr.find("#lblPredefName").text(PredefName);
tr.find("#lblPredefDescription").text(PredefDescription);
tr.find('.edit-mode, .display-mode').toggle();
$.ajax({
url: '/PredefinedViews/Update/',
data: JSON.stringify({ pID: PredefID, pName: PredefName, pDescript: PredefDescription }),
type: 'POST',
contentType: 'application/json; charset=utf-8',
error: function (event, jqxhr, settings, exception) {
alert("something went wrong")
if (jqxhr.status == 401) {
alert("session expired!");
}
},
success: function (event, jqxhr, settings, exception) {
alert("database updated!");
}
});
});
所以我有一个会话需要 5 分钟短,我成功设置,我需要通知用户会话已过期 但错误消息在会话过期后永远不会触发!但是,即使没有任何内容保存到数据库中,它也会总是触发成功消息。 所以我的问题是,如何触发 ajax 错误?
EDIT1这是我控制器中的方法:
[HttpPost]
[ValidateInput(false)]
public ActionResult Update(int pID, string pName, string pDescript)
{
using (PanSenseEntities context = new PanSenseEntities())
{
tblPredefineView existingPredefineView = context.tblPredefineViews.Find(pID);
existingPredefineView.Name = pName;
existingPredefineView.Description = pDescript;
context.SaveChanges();
}
return Json(JsonRequestBehavior.AllowGet);
}
EDIT2 我刚刚意识到,如果会话到期,它甚至不会到达控制器!我现在被难住了……
【问题讨论】:
-
你能在服务器端分享你的操作代码吗?
-
需要抛出异常或者返回Http错误
标签: jquery ajax asp.net-mvc