2012-04-26 2 views

Antwort

5

Wenn Sie JQuery für Ajax verwenden, setzt die folgende Request-Header:

X-Requested-With: XMLHttpRequest 

, die Sie später testen zugreifen können, wenn ein Anruf über Ajax getan wird oder nicht.

+0

I Ich bin mir dessen bewusst, dass ich mich gefragt habe, ob es eine ähnliche Methode wie "isAjax" direkt in Play Fw gibt, anstatt jedes Mal nach dieser Kopfzeile zu suchen, wenn ich es wissen muss. –

+0

Nein, es gibt keine, Sie müssen die Header überprüfen. –

+0

Es ist traurig. Warum haben sie diese Methode entfernt, es war sehr nützlich ?! –

4

Sie können es als eine Methode definieren und verwenden Sie es in Ihrem Controller:

def isAjax[A](implicit request : Request[A]) = { 
    request.headers.get("X-Requested-With") == Some("XMLHttpRequest") 
} 
+0

+1, nur die Anwesenheit von x-requested-with-Header zu überprüfen ist nicht genug, Android 4 sendet die Kopfzeile egal was (als "com.google. android.browser "), Ajax-Anfrage oder nicht. – virtualeyes

2

Hier ist eine naive Java-Implementierung für diejenigen, die Scala nicht (wie ich) verwenden

/** 
* 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); 
}