1

我需要在页面加载时开始轮询 URL,以从信用卡服务器获取 JMS 响应。我将以下内容放在一起。

它有效,但前提是我点击浏览器上的刷新按钮。我希望在首次显示页面时自动加载来自 URL 的数据,而不需要用户刷新。

我在这里遗漏了一个基本概念,并希望获得有关如何使其发挥作用的任何建议。到目前为止,我有大约 2 天的 JavaScript 经验。

<html>
    <body>

        <div id="p_results"></div>

        <script type="text/javascript">
            $(document).ready(function() {
                function doJMSPolling() {
                    $.ajax({
                        url: "./poll",
                        type: "GET",
                        dataType: "text",
                        success: function(json) {

                            var json = $.parseJSON(json);

                            if (json.status === 'continue-polling' && json.msg === 'ok') {
                                setTimeout(function() {
                                    doPolling();
                                }, 2000);
                            }
                            else if (json.status === 'stop-polling' && json.msg === 'success') {
                                for (key in json) {
                                    if (key === "providerResponse") {
                                        res = json[key];
                                        for (reskey in res) {
                                            $("#p_results").append(reskey + ":" + res[reskey] + "<br>"); 
                                        }
                                    }
                                }
                            } else if (json.status === 'stop-polling') {
                                $("#p_results").text(json.status);
                            }
                        }
                    });
                }
            });
        </script>
    </body>
</html>
4

3 回答 3

4

您不必将实际的函数定义放在document.ready回调中。该函数可以位于<script>标签内的任何位置。完成此操作后,您需要做的就是从document.ready回调中调用该函数 -

<script type="text/javascript">
$(function(){
  doJMSPolling();
});

function doJMSPolling(){
 ...
}
</script>

笔记 :

$(function(){})是简写$(document).ready(function(){})

于 2013-03-27T19:48:04.247 回答
3

在我看来,你是在声明你的函数,但没有调用它。为了执行函数的代码,您需要在 document.ready 中的函数声明之后添加:

doJMSPolling();
于 2013-03-27T19:47:50.403 回答
3

不要把你的函数放在里面document.ready只需在那里调用它。试试这个:

$(document).ready(function() {
    doJMSPolling();
});

function doJMSPolling() {
    $.ajax({
        url: "./poll",
        type: "GET",
        dataType: "text",
        success: function(json) {
            var json = $.parseJSON(json);
            if (json.status === 'continue-polling' && json.msg === 'ok') {
                setTimeout(function() {
                    doPolling();
                }, 2000);
            }
            else if (json.status === 'stop-polling' && json.msg === 'success') {
                for (key in json) {
                    if (key === "providerResponse") {
                        res = json[key];
                        for (reskey in res) {
                            $("#p_results").append(reskey + ":" + res[reskey] + "<br>"); 
                        }
                    }
                }
            }
            else if (json.status === 'stop-polling') {
                $("#p_results").text(json.status);
            }
       }
  });
}
于 2013-03-27T19:49:02.403 回答