2012-04-26 33 views

Trả lời

5

Nếu bạn sử dụng JQuery cho Ajax, nó đặt Yêu cầu sau Tiêu đề:

X-Requested-With: XMLHttpRequest 

mà sau này bạn có thể truy cập để kiểm tra nếu một cuộc gọi được thực hiện thông qua Ajax hay không.

+0

tôi nhận thức được điều đó, tôi chỉ tự hỏi nếu có một phương pháp tương tự như 'isAjax' trực tiếp trong Play Fw, thay vì phải kiểm tra tiêu đề này mỗi lần tôi cần biết. –

+0

Không, không có gì, bạn phải kiểm tra các tiêu đề. –

+0

Thật đáng buồn. Tại sao họ loại bỏ phương pháp này, nó rất hữu ích ?! –

4

Bạn có thể xác định nó như một phương pháp và sử dụng nó trong điều khiển của bạn:

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

+1, chỉ cần kiểm tra sự hiện diện của x-yêu cầu-với tiêu đề là không đủ, Android 4 sẽ gửi tiêu đề không có vấn đề gì (như "com.google. android.browser "), yêu cầu ajax hay không. – virtualeyes

2

Đây là một thực hiện Java ngây thơ đối với những người không sử dụng Scala (như tôi)

/** 
* 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); 
} 
Các vấn đề liên quan