PHP判斷一個請求是AJAX請求還是普通請求
在PHP程式中,如何判斷一個網頁請求是ajax請求還是普通請求?自從我做的一個車網專案以來,這個問題困擾了我很久了,原因是這樣的,我的那個車網專案,有一個四級聯動的車型檢索,必須得用ajax實現。功能是實現的蠻漂亮的,但是有一個問題,我發現在瀏覽器中直接輸入我ajax提交的地址帶上一些車型引數,瀏覽器就能把資料打印出來。我覺得這樣非常不好。
但是由於水平有限,這個問題直到今天才被我解決,特此留下文章以供有此需要的人學習。
DEMO看過了吧?不知道您有沒有發現普通請求和ajax請求的結果有什麼不一樣?呵呵~沒事,沒看明白的,下面我會詳細說說是怎麼實現的。
首先說說原理:
在傳送ajax請求的時候,我們可以通過XMLHttpRequest這個物件,建立自定義的header頭資訊
如果您使用的是原生的ajax方法,也就是未使用jquery或者其他js框架包裝的ajax方法,那麼程式碼如下: ?
1 |
xmlHttpRequest.setRequestHeader( "request_type" , "ajax" );
|
哦~對了,您一定知道xmlHttpRequest這個物件是怎麼建立的吧?額?您沒開玩笑吧?您不知道–那我勸您還是不要了解了,放心吧~您對他不瞭解也沒事,下面我來告訴你怎麼在jquery中使用,那是更加的簡單啊~~
通過jquery的$.ajax()方法,可以輕鬆地在傳送ajax請求之前,建立我們自定義的header頭資訊。
?1 2 3 4 5 6 7 8 9 10 11 12 |
$.ajax({
type
: "GET" ,
url
: base_url + 'php_check_ajax_request/get_user_list.html' ,
beforeSend
: function
(XMLHttpRequest) {
XMLHttpRequest.setRequestHeader( "request_type" , "ajax" );
},
success
: function (data){
$( "#user_list" ).html(data);
$tip.hide();
$button.attr( 'disabled' , true );
}
});
|
上面的程式碼,是我的demo中用到的程式碼,有好幾行吧,您別怕,要您注意的就是一個地址,找到了beforeSend了吧?對了,就是那裡了,XMLHttpRequest.setRequestHeader(“request_type”,”ajax”);這一句程式碼就是向header頭資訊裡面建立了一個我們自定義的一個變數“request_type”。
恩~~說到這裡,大家應該已經會在傳送ajax請求前往header頭資訊中加入自定的資訊了吧。
接下來我來告訴大家如果在php中取得這個資訊,也是相當簡單呀
如我之前定義的那個變數“request_type”,那麼在php中就應該這樣取得
1 |
$_SERVER [ 'HTTP_REQUEST_TYPE' ]
|
看了上面的程式碼之後,我想如此睿智的您一定已經發現規律了吧,對了,沒錯,就是將“request_type”這個變數全部大寫(一定要大寫),然後再加上一個“HTTP_”字首,然後再$_SERVER這個超級變數中找就可以了。
?1 2 3 |
if
(isset( $_SERVER [ 'HTTP_REQUEST_TYPE' ])
&& $_SERVER [ 'HTTP_REQUEST_TYPE' ]
== "ajax" ){ //ajax提交
} else { //非ajax提交
}
|
上面的程式碼就是在php程式中判斷請求到底是不是ajax請求了。
“request_type”這個變數是我們自定義的哦,如果您喜歡的話,您也可以將她換成你所喜歡的名字,比如“test”,“is_ajax”…….
基於以上的說明~~大家是否明白了呢?
呵呵~~不明白的也沒關係~~因為您可以稍微動動您的手指,留下您的疑問吧~
轉載自:夢三秋
相關推薦
PHP判斷一個請求是AJAX請求還是普通請求
在PHP程式中,如何判斷一個網頁請求是ajax請求還是普通請求?自從我做的一個車網專案以來,這個問題困擾了我很久了,原因是這樣的,我的那個車網專案,有一個四級聯動的車型檢索,必須得用ajax實現。功能是實現的蠻漂亮的,但是有一個問題,我發現在瀏覽器中直接輸入我ajax提交
php 判斷是否是Ajax請求
$_SERVER[‘HTTP_X_REQUESTED_WITH’],這個值可以判斷來自伺服器的請求是否是ajax請求 <?php //判斷請求是否是ajax請求 if(!empty($_SERVER['HTTP_X_REQUESTED_WITH'])){ //不為空
PHP判斷是否為AJAX請求
ajax請求常用的有兩種情況:一是jquery的ajax請求,一種是原生js的ajax請求 Jquery傳送的ajax請求 jquery會在請求頭加一個 X-Requested-With 資訊,資訊內容為XMLHttpRequest,這樣php可以使用$_SERVER這個全域性陣列來判別是否
Shiro攔截器,在登入時判斷是ajax請求返回json,普通請求跳轉頁面
在使用shiro時,會遇到普通的頁面請求以及api介面呼叫的請求,因此需要區別對待來判斷是跳轉登入頁面還是返回json的資料: 1.建立攔截器 package org.zyyd.base.filter; import com.alibaba.fastjson.JSONObject;
PHP判斷一個文件是否上傳成功
表單 部分 input 錯誤 == 常量 blank name ech 查看原文 $_FILES[‘myFile‘][‘error‘] 和該文件上傳相關的錯誤代碼。[‘error‘] 是在 PHP 4.2.0 版本中增加的。 // 下面是它的說明:(它們在PHP3.0
php 判斷一個點的經緯度是否在多邊形或圓裡
<?php /** * Created by PhpStorm. * User: 申大俠 * Date: 2018/7/11 * Time: 9:19 */ class Convert{ private $PI = 3.14159265358979324; pr
PHP判斷一個字元是否存在某個字串
$attach2=老螞蟻你妹的支付用的; $attach3=explode("支付用的",$attach2); if(count($attach3)>1){ 存在; }else{ 不存在; } 如果有不清楚的,可以諮詢老螞蟻技術部:1810782306
PHP判斷一個字串是否在另一個字串中
用到的函式 tristr() 函式查詢字串在另一個字串中第一次出現的位置。 如果成功,則返回字串的其餘部分(從匹配點)。如果沒有找到該字串,則返回 false。 語法 stristr(string,search) 引數 描述 string 必需。規定被搜尋
php判斷是否是ajax提交,判斷是否是微信內建瀏覽器
判斷是否是ajax提交,首先要知道ajax的操作物件是誰:”xmlhttprequest”,下面是一個簡單的判斷封裝: function is_ajax(){ return ((isset($_
PHP 判斷一個字符是否在字符串中
span echo ipo abcde 字符 examples def 地方 小寫 strpos() - 查找字符串 在另一字符串中 第一次出現的位置(區分大小寫) stripos() - 查找字符串 在另一字符串中 第一次出現的位置(不區分大小寫)
判斷一個請求是否為Ajax請求
iteye blank href 請求 logs 分享 判斷 let https 這幾天在寫一個網站的登錄判斷攔截器,需要對請求進行攔截,在攔截器中我需要判斷HttpServletRequest是否為Ajax異步請求。我們可以通過X-Requested-With="XMLH
PHP判斷請求方式(GET、POST、AJAX)
//是否是AJAX提交 function isAjax(){if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'x
在伺服器端判斷request來自Ajax請求 非同步 還是傳統請求 同步
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
SpringMVC 接收 Ajax和普通請求的 Controller 中的註解
類上面的 註解 這個 可以通用 不同的 是 方法上面的註解不同 @Controller @RequestMapping(value="/**") 方法 上面的註解 1)ajax 返回值 中的方法無法返回jsp頁面 配置的檢視解析器InternalResourceVi
如何判斷一個HTTP請求是瀏覽器請求還是應用程式請求?
1、獲取請求的request HttpServletRequest request=ServletActionContext.getRequest(); 2、攔截器中判斷請求頭 通常判斷來自手機端的請求還是PC端的請求只需要判斷: request.getHea
PHP封裝一個通用的CURL類方法(設定、獲取請求頭響應頭並處理)
通用的一個CURL類方法,設定請求頭、獲取響應頭等! 包括將格式處理成陣列格式,方便直接輸出 /** * 傳送https post請求,也支援http請求,包括header請求 * @param string $url 請求域名 * @
x-requested-with 請求頭 區分ajax請求還是普通請求
在伺服器端判斷request來自Ajax請求(非同步)還是傳統請求(同步): 兩種請求在請求的Header不同,Ajax 非同步請求比傳統的同步請求多了一個頭引數 1、傳統同步請求引數 accept text/html,application/xhtml+xml,a
一個以ajax請求為主的應用,資料傳輸加密的解決方案
首先是金鑰交換的過程,Diffie-Hellman金鑰交換演算法參考維基百科的文件: http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange client端js語言,服務端php語言 用DH金鑰交換演算法交換金鑰
Asp.net Mvc Preview 5 體驗--實現ActionSelectionAttribute來判斷是否為AJAX請求而選擇不同的Action
ActionSelectionAttribute是ASP.NET MVC Preview 5 提供的一個抽象基類,通過ActionSelectionAttribute的命名我們就可以猜想到這個Attribute是用來選擇(匹配)Action方法的。該抽象類只提供了一個抽象的方法 IsValidForReque
laravel判斷是否是ajax及postman模擬ajax請求
laravel判斷是否是ajax及postman模擬ajax請求 laravel 判斷是否是 ajax 請求 postman 模擬 ajax 請求 laravel 判斷是否是 ajax 請求 public function isAjaxR