0

ajax 呼び出しに問題があります。

以下のコードでは、ページが読み込まれると pageReload() 関数が自動的に呼び出され、10 秒ごとに ajaxCall() 関数が呼び出されます。

URLに必要なパラメーターを渡すことにより、ajaxを介してgrailsコントローラーのメソッドを呼び出しています。コントローラー メソッドは、書籍の名前、書籍の著者、および出版された年の 3 つの要素を含む配列を返します。

<htmL>
    <head>
        <script type="text/javascript">

            function pageReload() {
                var timeInterval = setInterval('ajaxCall()',10000);
            }

            function ajaxCall() {
                jQuery.ajax({    
                    url: '/getBook?rowName=${row}&columnName=${column}',
                    success: function(data){
                        bookReturned(data);
                    },
                    error: function() {
                        alert('Error occured in AJAX call');
                    }
                });
            }

            function bookReturned(values){
                alert("Values are : "+values);
            }

            window.onload=pageReload;

        </script>
    <head>
 </html>

10 秒ごとに、コントローラー メソッドから返される値のアラートが表示されます。しかし、コントローラーメソッドはajaxによる最初の呼び出しに対してのみ実行されます(コンソールに1回だけ表示されるコントローラーメソッドでprintlnを指定しました)。

コントローラーメソッドが呼び出されるたびに ajax 呼び出しを実行してコントローラーメソッドを実行する方法。

私はGrailsとajaxが初めてなので、これを手伝ってください。

前もって感謝します。

4

1 に答える 1

0

あなたのリクエストはキャッシュされています。キャッシュオプションをfalseに設定します。

false に設定すると、要求されたページがブラウザによってキャッシュされないように強制されます。注: キャッシュを false に設定すると、HEAD および GET リクエストでのみ正しく機能します。GET パラメータに「_={timestamp}」を追加することで機能します。このパラメーターは、GET によって既に要求された URL に対して POST が行われる IE8 を除いて、他のタイプの要求には必要ありません。

ここでキャッシュに関するjQueryのドキュメントを参照してください

jQuery.ajax({    
    cache: false,
    url: '/getBook?rowName=${row}&columnName=${column}',
    success: function(data){
        bookReturned(data);
    },
    error: function() {
        alert('Error occured in AJAX call');
    }
});
于 2013-07-17T17:31:41.563 に答える