在 Play Framework 1.x 中,我们可以通过询问方法快速知道请求是否为 AJAX request.isAjax()
,但我在 Play 2 上找不到。
有什么替代方法或这种方法在哪里?
在 Play Framework 1.x 中,我们可以通过询问方法快速知道请求是否为 AJAX request.isAjax()
,但我在 Play 2 上找不到。
有什么替代方法或这种方法在哪里?
如果您使用 JQuery for Ajax,它会设置以下请求标头:
X-Requested-With: XMLHttpRequest
您可以稍后访问以测试调用是否通过 Ajax 完成。
您可以将其定义为方法并在控制器中使用它:
def isAjax[A](implicit request : Request[A]) = {
request.headers.get("X-Requested-With") == Some("XMLHttpRequest")
}
对于那些不使用 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);
}