我想知道Grails中是否有一种方法可以返回HTML或JSON,这取决于我对某个 Action 进行GET还是只是通过Ajax调用一个 Action 。

例如,如果我对“controller / action”进行Ajax调用,是否可以返回JSON,并且如果我通过链接转到同一“controller / action”,则使其呈现HTML页面?还是我必须定义两个不同的 Action ?

请您参考如下方法:

通常,所有AJAX请求都设置了 X-Requested-With header 。您可以检查此 header 是否已设置并呈现所需的响应格式:

if (request.getHeader('X-Requested-With')) { 
    // render response as JSON 
} else { 
    // render HTML page 
} 

或者(如Martin Hauner在评论中指出的那样)使用 request.xhr属性,该属性基本相同,如果当前请求是AJAX,则返回 true:
if (request.xhr) { 
    // render response as JSON 
} else { 
    // render HTML page 
} 
request是代表当前请求的对象。 Read more about it in Grails documentation.


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!