2012-04-26 12 views

risposta

5

Se si utilizza JQuery per l'Ajax, imposta la seguente richiesta di intestazione:

X-Requested-With: XMLHttpRequest 

che in seguito sarà possibile accedere per verificare se la chiamata viene effettuata tramite Ajax o meno.

+0

I Ne sono consapevole, mi chiedevo se esistesse un metodo simile a "isAjax" direttamente in Play Fw, invece di dover controllare questa intestazione ogni volta che ho bisogno di sapere. –

+0

No, non ce n'è, devi controllare le intestazioni. –

+0

È triste. Perché hanno rimosso questo metodo, è stato molto utile ?! –

4

È possibile definire come un metodo e utilizzarlo nel vostro controller:

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

+1, basta controllare la presenza di x-richiesta-con intestazione non è sufficiente, Android 4 invia l'intestazione non importa cosa (come "com.google. android.browser "), richiesta Ajax o no. – virtualeyes

2

Ecco un'implementazione Java ingenuo per coloro che non utilizzano Scala (come me)

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