ThinkPHP 源碼分析之常量 IS_AJAX


在控制器中判斷請求是否是通過 AJAX 提交,ThinkPHP(3.2.2)中在 ThinkPHP/Library/Think/App.class.php (Line:49) 中定義了常量 IS_AJAX:

define('IS_AJAX', ((isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') || !empty($_POST[C('VAR_AJAX_SUBMIT')]) || !empty($_GET[C('VAR_AJAX_SUBMIT')])) ? true : false);

 

通過檢測 $_SERVER['HTTP_X_REQUESTED_WITH'] 的值是否是 XMLHttpRequest來判斷,或者通過檢測是否存在通過 POST 或者 GET 傳遞的 C('VAR_AJAX_SUBMIT') 的值來判斷,該值是寫在配置文件 ThinkPHP/Conf/convention.php(Line:159) 中:

defined('THINK_PATH') or exit();
return  array(
    //....
    /* 系統變量名稱設置 */
    //....
    'VAR_AJAX_SUBMIT'       =>  'ajax',  // 默認的AJAX提交變量
    //...
);

 

控制器(如果不是通過 AJAX 提交,則報錯):

        if(!is_AJAX){     
           $this->error("非法請求");
         }

 

可以測試通過 AJAX 發送請求時,服務器端 $_SERVER['HTTP_X_REQUESTED_WITH'] 的值(控制器):

$data =$_SERVER['HTTP_X_REQUESTED_WITH'];
$this->ajaxReturn($data);

 

在瀏覽器中通過觀察 HTTP 響應:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM