In Play ramowego 1.x, możemy szybko wiedzieć, jeśli wniosek był AJAX lub nie zadając request.isAjax()
metodę, ale nie mogę go znaleźć w Play 2.Gdzie jest metoda isAjax() w Play Framework 2.0?
Jaka jest alternatywa lub gdzie jest ta metoda?
In Play ramowego 1.x, możemy szybko wiedzieć, jeśli wniosek był AJAX lub nie zadając request.isAjax()
metodę, ale nie mogę go znaleźć w Play 2.Gdzie jest metoda isAjax() w Play Framework 2.0?
Jaka jest alternatywa lub gdzie jest ta metoda?
Jeśli użyć jQuery dla Ajax, ustawia następujące nagłówka żądania:
X-Requested-With: XMLHttpRequest
które później można przejść do sprawdzenia, czy połączenie jest wykonywane za pośrednictwem Ajax lub nie.
Można zdefiniować ją jako metodę i używać go w kontrolerze:
def isAjax[A](implicit request : Request[A]) = {
request.headers.get("X-Requested-With") == Some("XMLHttpRequest")
}
+1, samo sprawdzenie obecności nagłówka x z zaproszeniem nie wystarczy, Android 4 wysyła nagłówek bez względu na to, co (jak "com.google. android.browser "), prośba o ajax lub nie. – virtualeyes
Oto naiwna implementacja Javy dla tych, którzy nie korzystają Scala (jak ja)
/**
* 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);
}
I "Jestem tego świadomy, właśnie zastanawiałem się, czy istnieje podobna metoda jak" isAjax "bezpośrednio w Play Fw, zamiast konieczności sprawdzania tego nagłówka za każdym razem, kiedy muszę to wiedzieć. –
Nie, nie ma, musisz sprawdzić nagłówki. –
To smutne. Dlaczego usunęli tę metodę, to było bardzo przydatne ?! –