我正在尝试向一个非常简单的Grails方法发出ajax
请求:
def countRace() {
Date date = params.date("date", 'yyyy-MM-dd');
Integer count = Race.countByDate(date);
log.info("Number of races on " + date + " is " + count);
return [count : count]
}
我正在使用以下jQuery代码来执行此操作:
function updateDayRaceCount(id) {
$.ajax({
url: "${g.createLink(controller:'data', action:'countRace')}?date=" + id
}).done(function(response) {
alert(response);
});
}
我看到日志在服务器上触发,所以我知道该方法正在被点击:
grails.app.controllers.runnerdb.DataController Number of races on Thu Mar 06 00:00:00 GMT 2014 is 38
但ajax请求错误输出404
。当我发现错误时,我发现它是Tomcat
标准404页面,以及生成的URL,如下所示:
/runnerdb/data/countRace?date=<id here>
正被映射到:
/runnerdb/WEB-INF/grails-app/views/data/countRace.jsp
这就是问题所在,因为我想Tomcat或grails正试图渲染一个不存在的视图。
我的问题是......
如何在grails中仅针对这一种方法停止此类行为,并强制它只返回int
值?
答案 0 :(得分:3)
默认情况下,Grails按惯例解析视图。在您的情况下,您将需要使用render而不是return。通过使用return,您可以告诉Grails使用return作为模型继续处理视图。
以下是渲染文本值的示例:
render(text: count)
或者,您可能希望将结果呈现为JSON(如果导入转换器):
render [count: count] as JSON