Javascript函数在页面加载而不是onclick上触发

时间:2015-03-27 10:12:14

标签: javascript jquery .net

<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中回调最终方法?

4 个答案:

答案 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选项卡以查看它被调用的位置。