继承我的设置。我有一个按钮。
<input type="submit" value="Checkout" name="submitAction" class="btn btn-block alert-success unlock" />
击中此控制器。
[HttpPost]
public ActionResult CheckoutCase(int id)
{
Case currentCase = db.Cases.Find(id);
currentCase.LockCase = true;
currentCase.Lockout_TS = DateTime.Now;
LogHistory userComments = new LogHistory("Case has been checked out", "User");
currentCase.LogHistories.Add(userComments);
db.SaveChanges();
string url = this.Request.UrlReferrer.AbsolutePath;
return Redirect(url);
}
在点击该按钮的同时,我试图运行15分钟的jquery计时器,让用户知道他们的会话已经过期并点击另一个解锁案例的控制器。
[HttpPost]
public ActionResult UnlockCase(int id)
{
Case currentCase = db.Cases.Find(id);
currentCase.LockCase = false;
string url = this.Request.UrlReferrer.AbsolutePath;
return Redirect(url);
}
我已经尝试过很多与JQuery不同的东西,但我似乎找不到合适的方法来完成这项工作。
$('.unlock').click(function(){
setTimeout(function () {
var id = @Model.ID
$.ajax({
type: 'POST',
url: '/Case/UnlockCase',
data: 'id=' + id,
success: function () {
window.location.reload(true);
}
});
//}, 15 * 1000 * 60);
}, 10000);
}
错误:
不推荐使用getPreventDefault()。使用defaultPrevented 代替。 browserLink:37:0在内容进程中使用nsIFile是 弃用。 filesystem.js:38:0 TypeError:this._recipeManager为null LoginManagerParent.jsm:185:9不推荐使用getPreventDefault()。 请改用defaultPrevented。 browserLink:37:0处理程序功能丢了 异常:TypeError:info为null Stack: _addBreakpoint @ resource://gre/modules/commonjs/toolkit/loader.js - &gt;资源:///modules/devtools/sourceeditor/debugger.js:138:5 addBreakpoint /&lt; @resource://gre/modules/commonjs/toolkit/loader.js - &gt; 资源:///modules/devtools/sourceeditor/debugger.js:154:37 makeInfallible /&lt; @resource://gre/modules/commonjs/toolkit/loader.js - &gt; 资源://gre/modules/devtools/DevToolsUtils.js:83:14行:138, column:5 DevToolsUtils.js:59:0某些键盘事件不可用 键盘布局:键=&#34; e&#34;修饰符=&#34; accel alt&#34; debugger.xul键事件 某些键盘布局不可用:key =&#34; v&#34;修饰符=&#34; accel alt&#34; debugger.xul键盘事件在某些键盘布局上不可用:key =&#34; f&#34; 修饰符=&#34; accel alt&#34; debugger.xul GTK2上没有关键事件: 键=#&34; U&#34;修饰符=&#34; shift,accel&#34; toolbox.xul
非常感谢任何帮助。
答案 0 :(得分:0)
将按钮类型更改为“按钮”。 “提交”通常用于向后端提交表单。
<input type="button" value="Checkout" name="submitAction" class="btn btn-block alert-success unlock" />
答案 1 :(得分:0)
我认为您误解了setTimeout
事件。事件将先等待直到计时器完成,然后启动以执行内部定义的功能。在你的情况下,这意味着,等待15分钟比jquery请求。见documentation
我认为你需要的东西会是这样的:
// Set the time for error message, if request woudn't end
var yourTimeout = setTimeout(function() { timeOutError() }, 10000);
var id = @Model.ID
$.ajax({
type: 'POST',
url: '/Case/UnlockCase',
data: 'id=' + id,
success: function () {
window.location.reload(true);
//clear timeout on success
clearTimeout(yourTimeout);
},
error() {
//handle erre
//clear timeout on error
clearTimeout(yourTimeout);
}
});
function timeOutError() {
// your timeout error
}
更新(根据您的评论)
$('.unlock').click(function(){
var id = @Model.ID
// Set the time for error message, if request woudn't end
var yourTimeout = setTimeout(function() { timeOutAction(id) }, 10000);
// ajax request to CheckOutCase
$.ajax({
type: 'POST',
url: '/Case/CheckoutCase',
data: 'id=' + id,
success: function (result) {
window.location.reload(true);
//clear timeout on success
clearTimeout(yourTimeout);
},
error: function(requestObject, error, errorThrown) {
//handle erre
//clear timeout on error
clearTimeout(yourTimeout);
}
});
});
// invoked because of timeout
function timeOutAction(id) {
// ajax request to UnlockCase
$.ajax({
type: 'POST',
url: '/Case/UnlockCase',
data: 'id=' + id,
success: function (result) {
},
error: function(requestObject, error, errorThrown) {
}
});
}