如何递归调用ajax方法

时间:2013-07-17 14:22:15

标签: ajax jquery grails

我的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的新手。

提前致谢。

1 个答案:

答案 0 :(得分:0)

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

  

如果设置为false,则会强制请求的页面不被缓存   浏览器。注意:将缓存设置为false只能正常使用   HEAD和GET请求。它的工作原理是将“_ = {timestamp}”附加到   GET参数。其他类型的参数不需要   请求,但在IE8中,对已经存在的URL进行POST时除外   GET请求。

请参阅cache here

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