<script type="text/javascript">
var tId;
$(function() {
$('#btnSign').click(function() {
InitiatePolling();
});
});
function InitiatePolling() {
event.preventDefault();
tId = setInterval(Poll, 1000);
}
function Poll() {
event.preventDefault();
var res = <%= PollResponse() %>;
}
</script>
我正在尝试编写一个从前端触发点击事件的javascript函数。并在后端调用方法。确实可以调用该方法,这里的问题是函数Poll()在加载此用户控件时执行。如何防止该功能过早运行?
编辑: $(document).ready(function(){ $('#btnSign')。click(function(){ tId = setInterval(function(){Poll();},1000);
function Poll(){
var res = <%= PollResponse() %>;
}
});
});
我将所有内容移动到单击按钮时应触发的函数内,但无论如何,每次回发都会执行带PollResponse()调用的行。也许这是解决这个问题的错误方法,是否有更安全的方法在用户控件javascript中回调最终方法?
答案 0 :(得分:0)
尝试订阅点击事件,如下所示:
$("body").on("click", "#btnSign", function() {
InitiatePolling();
});
答案 1 :(得分:0)
以这种方式编写setTimeInterval。否则该函数在setTimeInterval中执行。我知道这很奇怪。
function InitiatePolling() {
event.preventDefault();
tId = setInterval(function(){Poll();}, 1000);
}
更新:
您的代码中的问题是<%= PollResponse() %>
。 &LT; %%&GT;定义在生成页面HTML时将在服务器上执行代码。
如果您在浏览器上看到您页面的呈现HTML,则会看到它不是res = <%= PollResponse() %>
而是res = out put of PollResponse
。
因此每次加载页面时都会执行此功能。
如果你想从javascript调用服务器函数,你需要使用ajax。像这样的东西
function Poll() {
event.preventDefault();
$.ajax({
url : "yourServerUrl/PollResponse",
success : function(result){ res = result; }
});
}
我不知道JS版本要进行异步调用。请在参考文献中查看。
答案 2 :(得分:0)
您可以尝试使用setTimeout
代替setInterval
。以下是正常运行的代码:
$(document).ready(function() {
$('.btnSign').click(function() {
Poll();
});
});
function Poll() {
debugger;
var res = '<%= PollResponse() %>';
setTimeout(Poll, 2000);
}
答案 3 :(得分:-1)
尝试使用
$(document).ready(function() {
$('#btnSign').click(function() {
InitiatePolling();
});
});
无论如何,你应该使用浏览器开发者工具并在Poll函数中添加一个断点,并检查Call Stack选项卡以查看它被调用的位置。