我的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的新手。
提前致谢。
答案 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');
}
});