这是我的代码:
this.ItemId = function (ItemId) {
var itemParameters = ItemId;
//put a timer
setTimeout(function() {
$.ajax({
type: "POST",
url: '/Menu/ChangeItemId',
dataType: 'json',
data: JSON.stringify(itemParameters),
contentType: "application/json; charset=utf-8",
success: self.ChangeItemIdSuccess,
error: errorFunc
}, 5000);
});
};
一旦ItemId完成执行,post请求就完成了,在将数据发布到服务器之前,我想延迟它(5秒),以防用户再次单击该按钮,更改进程中的ItemId
答案 0 :(得分:2)
看起来像是一个错字:
setTimeout的原型:setTimeout(function,milliseconds,lang)
你将5000参数添加到 ajax 方法 >> setTimeout 方法。
这是有效的代码:
this.ItemId = function (ItemId) {
var itemParameters = ItemId;
//put a timer
setTimeout(function() {
$.ajax({
type: "POST",
url: '/Menu/ChangeItemId',
dataType: 'json',
data: JSON.stringify(itemParameters),
contentType: "application/json; charset=utf-8",
success: self.ChangeItemIdSuccess,
error: errorFunc
});
}, 5000);
};
Here's
setTimeout
的简单示例。
答案 1 :(得分:0)
我没有得到你想要做的事情,但是如果你想要用户点击按钮,那么第二次点击后请求将被称为5000 milisec而不是第一次点击。你应该试试这个: -
this.ItemId = function (ItemId) {
var itemParameters = ItemId, me = this;
//put a timer
me.doneTypingInterval = 5000;
// Call every time
me.delayExecute = function() {
clearTimeout(me.typingTimer);
me.typingTimer = setTimeout(me.request, me.doneTypingInterval);
return true;
};
// do ajax
me.request = function() {
$.ajax({
type: "POST",
url: '/Menu/ChangeItemId',
dataType: 'json',
data: JSON.stringify(itemParameters),
contentType: "application/json; charset=utf-8",
success: self.ChangeItemIdSuccess,
error: errorFunc
});
};
};