2009-07-11 67 views
4

Kohana如何確定請求是否爲AJAX請求?request :: is_ajax()如何在Kohana中工作?

引用鏈中是否有任何不同?我需要添加一個GET參數,或許是?ajax=true

+0

哦,男人,只要看看源! – 2011-12-10 18:23:36

+0

作爲一個PHP noob,我不太容易追蹤它在源代碼中的位置(至少當我問這個問題時)。 – alex 2013-02-08 23:29:25

回答

8

它檢查請求是否由XM​​LHttpRequest進行,因爲大多數瀏覽器在這種情況下用這個指示發送標題:標題HTTP_X_REQUESTED_WITH將被設置爲XMLHttpRequest

5

由於v2.3.4的

/** 
* Tests if the current request is an AJAX request by checking the 
* X-Requested-With HTTP request header that most popular JS frameworks 
* now set for AJAX calls. 
* 
* @return boolean 
*/ 

public static function is_ajax() 
{ 
    return (isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND 
      strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest'); 
} 
1

死靈投送,因爲這想出了我的第一次谷歌搜索。

不知道如果Kohana仍然以這種方式工作,但使用HTTP_X_REQUESTED_WITH不再是最佳實踐。

Ajax請求 - 實際上所有的HTTP請求 - 應該發送一個「Accept」頭。

任何服務器端進程都應檢查「Accept」標頭以確定要發送的響應內容。在PHP中做到這一點的一種方法是:

function is_ajax() { 
    return $_SERVER['HTTP_ACCEPT'] == 'application/json'; 
    }