6

在 Play Framework 1.x 中,我们可以通过询问方法快速知道请求是否为 AJAX request.isAjax(),但我在 Play 2 上找不到。

有什么替代方法或这种方法在哪里?

4

3 回答 3

5

如果您使用 JQuery for Ajax,它会设置以下请求标头:

 X-Requested-With: XMLHttpRequest

您可以稍后访问以测试调用是否通过 Ajax 完成。

于 2012-04-27T13:21:45.460 回答
4

您可以将其定义为方法并在控制器中使用它:

def isAjax[A](implicit request : Request[A]) = {
  request.headers.get("X-Requested-With") == Some("XMLHttpRequest")
}
于 2013-05-03T09:53:31.947 回答
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);
}
于 2014-03-25T17:58:16.763 回答