2012-04-26 14 views

Odpowiedz

5

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.

+0

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ć. –

+0

Nie, nie ma, musisz sprawdzić nagłówki. –

+0

To smutne. Dlaczego usunęli tę metodę, to było bardzo przydatne ?! –

4

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") 
} 
+0

+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

2

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); 
} 
Powiązane problemy