1

クレジット カード サーバーから JMS 応答を取得するには、ページの読み込み時に URL のポーリングを開始する必要があります。以下をまとめました。

動作しますが、ブラウザの [更新] ボタンをクリックした場合のみです。ページが最初に表示されたときに、ユーザーが更新する必要なく、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 に答える