在Play Framework 1.x中,我们可以通过询问request.isAjax()
方法快速了解请求是否为AJAX,但我无法在Play 2中找到它。
这种方法的替代方案是什么?
答案 0 :(得分:5)
如果您使用JQuery进行Ajax,它会设置以下请求标头:
X-Requested-With: XMLHttpRequest
如果通过Ajax进行调用,您以后可以访问测试。
答案 1 :(得分:4)
您可以将其定义为方法并在控制器中使用它:
def isAjax[A](implicit request : Request[A]) = {
request.headers.get("X-Requested-With") == Some("XMLHttpRequest")
}
答案 2 :(得分:2)
对于那些不使用Scala(像我一样)的人来说,这是一个天真的Java实现
/**
* Check if the request was made via Ajax or not
* @return
*/
public static Boolean isAjax() {
String requestWithHeader = "X-Requested-With";
String requestWithHeaderValueForAjax = "XMLHttpRequest";
String[] value = request().headers().get(requestWithHeader);
return
value != null &&
value.length > 0 &&
value[0].equals(requestWithHeaderValueForAjax);
}