1. 程式人生 > >PHP判斷一個請求是AJAX請求還是普通請求

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