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的第一次调用时执行(我在控制器方法中给出了println,它只在控制台中显示一次)。

每次调用时如何让ajax调用来执行控制器方法。

请帮助我,因为我是 Grails 和 ajax 的新手。

提前致谢。

4

1 回答 1

0

您的请求正在被缓存。将缓存选项设置为false

如果设置为 false,它将强制浏览器不缓存请求的页面。注意:将缓存设置为 false 仅适用于 HEAD 和 GET 请求。它通过将“_={timestamp}”附加到 GET 参数来工作。其他类型的请求不需要该参数,除非在 IE8 中对已由 GET 请求的 URL 进行 POST。

在此处查看有关缓存的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 回答