我有一些jQuery代码调用" valvonta"每6秒钟一次。但是当radiobutton值发生变化时,valvonta()根本不起作用。它应该立即执行,而不是在6秒后执行。
我应该如何修改我的代码?谢谢你的帮助。
$(document).ready(function(){
valvonta = setInterval(function() {
var kaavio = 38;
jQuery.post("hae_tilanteet.php", {
kaavio: kaavio
}).done(function(data) {
$('#valvonta').html(data);
});
}, 6000);
$('#kaaviotaulukko').change(function(){
valvonta(); // this does not work
alert('Radio Box has been changed!');
});
});
答案 0 :(得分:0)
您尚未正确定义该功能。
$(document).ready(function(){
valvonta = function() {
var kaavio = 38;
jQuery.post("hae_tilanteet.php", {
kaavio: kaavio
}).done(function(data) {
$('#valvonta').html(data);
});
};
//Pass the function reference to be executed after 6 sec
setInterval(valvonta,6000);
$('#kaaviotaulukko').change(function(){
valvonta(); // this does not work
alert('Radio Box has been changed!');
});
});
答案 1 :(得分:0)
valvonta不是一个函数,而是一个标识间隔的唯一ID。
而是将您的函数命名为,而不是返回值:
$(document).ready(function(){
setInterval(function valvonta() { // <---- this changed.
var kaavio = 38;
jQuery.post("hae_tilanteet.php", {
kaavio: kaavio
}).done(function(data) {
$('#valvonta').html(data);
});
}, 6000);
$('#kaaviotaulukko').change(function(){
valvonta(); // this does not work
alert('Radio Box has been changed!');
});
});
答案 2 :(得分:0)
使用setInterval和AJAX不是一个好主意。 如果服务器没有响应,则每6秒钟一次。 而是执行此操作,仅在服务器返回时重新加载。 您甚至可以更改成功,因此只有在成功重新加载时才会重试。
var tId,
valvonta = function() {
clearTimeout(tId); // in case there is one running
var kaavio = 38;
$.post("hae_tilanteet.php", {
kaavio: kaavio
}).done(function(data) {
$('#valvonta').html(data);
tId = setTimeout(valvonta,6000);
});
};
$(function(){
//Pass the function reference to be executed after 6 sec
tId = setTimeout(valvonta,6000);
$('#kaaviotaulukko').on("click",function(){
valvonta();
// never alert in a page with timeout/interval - it blocks
console.log('Radio Box has been changed!');
});
});