我想反复计算时间并每隔一分钟更新一次当前时间。我的代码不起作用。 Firebug控制台表示最终的行函数getStatus()
未定义。如何反复调用此函数?
jQuery(document).ready(function($){
$(function() {
getStatus();
});
function getStatus() {
var post_id = $('#post_id').val();
var nonce = $('#_wpnonce').val();
jQuery.ajax({
url : ajaxurl,
data : {action: "update_edit_lock", post_id : post_id, nonce: nonce },
success: function(response) {
if(response == "false") {
alert("failed")
}
else {
$("#message").html(response)
}
}
});
setTimeout("getStatus()",60000);
}
},(jQuery));
答案 0 :(得分:2)
你的问题是getStatus包含在另一个回调中。要么window.getStatus = function(){}
,要么将代码转为:
jQuery(document).ready(function($){
var getStatus = function() {
var post_id = $('#post_id').val();
var nonce = $('#_wpnonce').val();
jQuery.ajax({
url : ajaxurl,
data : {action: "update_edit_lock", post_id : post_id, nonce: nonce },
success: function(response) {
if(response == "false") {
alert("failed")
}
else {
$("#message").html(response)
}
}
});
setTimeout(getStatus,60000);
};
$(function() {
getStatus();
});
},(jQuery));
将字符串传递给setTimeout
会使其成为eval
字符串,您应该避免使用该字符串,而代码通常不需要
答案 1 :(得分:1)
您也许可以使用setInterval(getStatus, 60000)
,否则您应该使用setTimeout(getStatus, 60000)
。不要使用字符串作为函数回调,而是使用命名函数。
答案 2 :(得分:1)
使用setInterval(function, milliseconds)
jQuery(document).ready(function ($) {
var getStatus = function() {
var post_id = $('#post_id').val();
var nonce = $('#_wpnonce').val();
jQuery.ajax({
url: ajaxurl,
data: {
action: "update_edit_lock",
post_id: post_id,
nonce: nonce
},
success: function (response) {
if (response == "false") {
alert("failed")
} else {
$("#message").html(response)
}
}
});
}
setInterval(getStatus, 1000);
}, (jQuery));