導航:首頁 > 編程語言 > php判斷是否ajax請求

php判斷是否ajax請求

發布時間:2023-04-04 03:06:33

⑴ thinkphp中怎麼實現跳轉到其他網站

5.15 重定向
Action類的redirect方法可以實現頁面的重定向功能。

redirect方法的參數用法和U函數的用法一致(參考上面的URL生成部分),例如:

上面的用法是停留5秒後跳轉到News模塊的category操作,並且顯示頁面跳轉中字樣,重定向後會改變當前的URL地址。

如果你僅僅是想重定向要一個指定的URL地址,而不是到某個模塊的操作方法,可以直接使用redirect方法重定向,例如:

Redirect方法的第一個參數是一個URL地址。

5.14 頁面跳轉
在應用開發中,經常會遇到一些帶有提示信息的跳轉頁面,例如操作成功或者操作錯誤頁面,並且自動跳轉到另外一個目標頁面。系統的Action類內置了兩個跳轉方法success和error,用於頁面跳轉提示,而且可以支持ajax提交。使用方法很簡單,舉例如下:

Success和error方法都有對應的模板,並且是可以設置的,默認的設置是兩個方法對應的模板都是:

模板文件可以使用模板標簽,並且可以使用下面的模板變數:

$msgTitle:操作標題

$message :頁面提示信息

$status :操作狀態 1表示成功 0 表示失敗 具體還可以由項目本身定義規則

$waitSecond :跳轉等待時間 單位為秒

$jumpUrl :跳轉頁面地址

success和error方法會自動判斷當前請求是否屬於Ajax請求,如果屬於Ajax請求則會調用ajaxReturn方法返回信息,具體可以參考後面的AJAX返回部分。

這些事thinkphp3.0手冊上有的,自己下載手冊看看

⑵ php判斷當前請求是post還是get

PHP 全局變數 -超全局變數- $_SERVER

判斷請求是GET:

$_SERVER['REQUEST_METHOD']=='GET'?true:false

判斷請求是POST:

$_SERVER['REQUEST_METHOD']=='POST'?true:false

另外判斷請求是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

⑶ 如何通過php的curl模擬ajax請求,獲取其返回值

這個需要配合js,打開一個html頁面,首先js用ajax請求頁面,返回第一個頁面信息確定處理完畢(ajax有強制同步功能),ajax再訪問第二個頁面。(或者根據伺服器狀況,你可以同時提交幾個URL,跑幾個相同的頁面)
參數可以由js產生並傳遞url,php後台頁面根據URL抓頁面。然後ajax通過php,在資料庫或者是哪裡設一個標量,標明檢測到哪裡。由於前台的html頁面執行多少時候都沒問題,這樣php的內存限制和執行時間限制就解決了。
因為不會浪費大量的資源用一個頁面來跑一個瞬間500次的for循環了。(你的500次for循環死了原因可能是獲取的數據太多,大過了php限制的內存)
不過印象中curl好像也有強制同步的選項,就是等待一個抓取後再執行下一步。但是這個500次都是用一個頁面線程處理,也就是說肯定會遠遠大於30秒的默認執行時間。

⑷ thinkphp怎樣獲取ajax請求數據

一般將前台頁面搜索結果中,不喜歡的內容(鏈接),刪除掉,因為整個網站的編程框架式thinkphp,運用js中的ajax對頁面進行響應,調用後台php介面,實現前台和後台資料庫的同時更新.
首先我們需要做的就是在前台頁面中添加一個文本「刪除」,可以這么添加:
代碼如下:

<a href="javascript:void(0);" id= "<php>echo $val[id]</php>" class="delete" >刪除</a>
上面的html代碼的意思:就是給刪除添加一個href,這個href是個js函數,類似於超鏈接的作用,當然對於我這樣的新手在剛開始的時候會有疑惑,我們平時的超鏈接不是這樣的,網頁中很多的javascript:void(0),那程序怎麼知道用戶點擊刪除後,會響應其真正對應的js函數呢?別急,這就是為什麼會為刪除添加id以及class這樣的標簽,相信我把js中的代碼公布出來以後你就會明白了,代碼如下:
jQuery(".list a.delete").click(function(){
if(confirm("你確定要刪除嗎?")){
var _this=this;
var id = jQuery(_this).attr("id");
jQuery.ajax({
url : '/Search/index.php/Jason/delete?',
data : {'id':id},
dataType : 'json',
success : function(data){
var del = data.del;
if(del == 1){//刪除成功
jQuery("#"+id).parents(".list").remove();
}else{//刪除失敗
alert("刪除失敗");
}
}
});
}
});

大家看函數的頭部:jQuery(".list a.delete").click(),jQuery後面的標簽是很重要的,這就保證了jquery很准確的響應頁面中用戶點擊的「位置」,添加的事件為click(),在click里添加響應事件的代碼:var id = jQuery(_this).attr("id");獲取a對應的id,因為這個id是我們刪除資料庫時用到的鏈接id,當然這種直接明文的方式不好,在這里只是介紹整個響應過程。調用ajax,實現非同步的運行整個過程。我們設置了js接受的是json串,這里的方式應該有很多種吧,我沒有去嘗試,大家要是有興趣可以自行嘗試一下。/Search/index.php/Jason/delete?這句話就是js去請求php的介面,php介面對用的代碼如下:
注意ajax在求php介面時的路徑,也就是delete函數必須放在JasonAction.class.php中,此例子是必須這樣的:
代碼如下:

public function delete(){
if($this->isGet()){
$userId = session("uid");//用戶登錄
if(!empty($userId)){
$a = M('***');
$id = $this->_get('id');
$result=$a->where("id=$id")->delete();//刪除
if($result > 0){
$arr = array("del"=>'1');
}else{
$arr = array("del"=>'0');
}
$json_str = json_encode($arr);
echo $json_str;//返回給js
}
}
}

相信大家對上面的代碼不會陌生吧,整個過程都是thinkphp框架內部配置完畢的.
var del = data.del;這句是接受php代碼返回來的json串中del這個key的value,進而在前台進行頁面更新和響應.

復制代碼代碼如下:
if(del == 1){//刪除成功
jQuery("#"+id).parents(".list").remove();//這句話就是後台刪除成功後,直接在前台對響應的div進行刪除,這樣性能就會很快,無需進行後台數據的重新提取至前台頁面中,
}else{//刪除失敗
alert("刪除失敗");
}
整個響應的過程就是這樣,至於效果優化,是優化和細化方面的問題,後來,身邊的同事又告訴我前台移除響應鏈接的另一個動態效果:
即將:
代碼如下:
jQuery("#"+id).parents(".list").remove();
替換為:
代碼如下:

jQuery("#"+id).parents(".list").slideUp("slow", function(){
jQuery(this).remove();
});

⑸ PHP如何判斷是否為AJAX請求

⑹ thinkphp 驗證是不是ajax提交

有兩種方式,如下:

第一種方式
PHP判斷ajax請求的原理:
在發送ajax請求的時候,我們可以通過XMLHttpRequest這個對象,創建自定義的header頭信息, 在jquery框架中,對於通過它的$.ajax, $.get, or $.post方法請求網頁內容時,它會向伺服器傳遞一個HTTP_X_REQUESTED_WITH的參數,php中就是在header一層判斷是否是ajax請求,對應的根據$_SERVER['HTTP_X_REQUESTED_WITH']判斷。
/**
* 當前請求是否ajax請求
*
* @access public
* @return bool
*/
function isAjax()
{
return isset($_SERVER['HTTP_X_REQUESTED_WITH']);
}


注意:
● 一般情況下$_SERVER['HTTP_X_REQUESTED_WITH']默認是XMLHttpRequest
● $_SERVER['HTTP_X_REQUESTED_WITH']也可以自定義創建的,使用XMLHttpRequest.setRequestHeader(name,value);參考文章:http://www.skygq.com/2011/01/04/php-check-request-from-ajax-or-normal/

第二種方式
通過前台給php傳一個type參數來判斷,type=1則是ajax,否則是普通提交。

⑺ thinkphp使用header跳轉功能參數

thinkphp只是php一個框架了,但如果要實現頁面跳轉並不能使用header函數來實現了,下面小編來給大家介紹在thinkphp頁面跳轉方法總結吧。

通過這段時間thinkphp的應運,經常會遇到一些帶有提示信息的跳轉頁面,操作成功或者操作錯誤頁面,並且自動跳轉到另外一個目標頁面。系統的Action類內置了兩個跳轉方法success和error,用於頁面跳轉提示,而且可以支持ajax提交。

使用方法很簡單。
代碼如下 復制代碼
$User=M(『user』)//實例化user表

$res=$User->where(array(』name』=』lone』))->select //查詢name是lone

If($res){

$this->success(「輸出的提示信息」,」/User/list/」);
//查詢成功後跳轉的頁面第二個參數是模板路徑地址

}else{

$this->error(「輸出的錯誤信息」); //查詢失敗後返回上一頁

}

$this->redirect(「Index/list」); //直接跳轉,不帶計時後跳轉

這3中內置的跳轉都很好用,而且提高了網頁的效率!
Success和error方法都有對應的模板,並且是可以設置的,默認的設置是兩個方法對應的模板都是:
代碼如下 復制代碼
//默認錯誤跳轉對應的模板文件
'TMPL_ACTION_ERROR' => THINK_PATH . 'Tpl/dispatch_jump.tpl';
//默認成功跳轉對應的模板文件
'TMPL_ACTION_SUCCESS' => THINK_PATH . 'Tpl/dispatch_jump.tpl';
也可以使用項目內部的模板文件
代碼如下 復制代碼
//默認錯誤跳轉對應的模板文件
'TMPL_ACTION_ERROR' => 'Public:error';
//默認成功跳轉對應的模板文件
'TMPL_ACTION_SUCCESS' => 'Public:success';
模板文件可以使用模板標簽,並且可以使用下面的模板變數:
模板文件可以使用模板標簽,並且可以使用下面的模板變數:
jquery171008461078754635143="26">
$msgTitle 操作標題
$message 頁面提示信息
$status 操作狀態 1表示成功 0 表示失敗 具體還可以由項目本身定義規則
$waitSecond 跳轉等待時間 單位為秒
$jumpUrl 跳轉頁面地址 success和error方法會自動判斷當前請求是否屬於Ajax請求,如果屬於Ajax請求則會調用ajaxReturn方法返回信息,具體可以參考後面的AJAX返回部分。

⑻ Ajax向伺服器發送請求和接收返回的信息

Ajax向伺服器發送請求

Ajax對象創建完成後,下面就要講解一下Ajax如何使用。首先詳細講解一下Ajax向伺服器發送請求所需的兩個方法,具體如下:

(1)open()方法

open()方法用於創建一個新的HTTP請求,並指定此請求的類型(如GET、POST等)、URL以及驗證信息,其聲明方式如下所示:

在上述聲明中,method用於指定請求的類型,其值可為POST、GET、PUT及PROPFIND,大小寫不敏感;URL表示請求的地址,可以為絕對地址也可以為相對地址,並且可以傳遞查詢字元串。其餘參數為可選參數,其中,asyncFlagy用於指定請求方式,同步請求為false,默認為非同步請求true;userName用於指定用戶名,password用於指定密碼。

(2)send()方法

send()方法用於發送請求到HTTP伺服器並接收回應。其聲明方式如下所示:

在上述聲明中,content用於指定要發送的數據,其值可為DOM對象的實例、輸入流或字元串,一般與POST請求類型配合使用,需要注意的是,如果請求聲明為同步,該方法將會等待請求完成或者超時才會返回,否則此方法將立即返回。

需要注意的是,在使用GET方式傳遞特殊字元或中文參數時,要使用JavaScript中的encodeURIComponent()函數將其轉換成「%十六進制數」的形式,防止在某些瀏覽器(如IE瀏覽器)中中文亂碼的問題。

Ajax接收伺服器返回的信息

了解Ajax向伺服器發送請求後,下面將對Ajax如何接收伺服器返回的信息(例如,HTML標簽、CSS樣式、字元串、XML、JSON等),進行詳細講解。具體如下:

(1)readyState屬性

readyState屬性用於返回Ajax的當前狀態,狀態值有5種形式,具體如表所示。

(2)onreadystatechange屬性

onreadystatechange事件屬性用於感知readyState屬性狀態的改變。為了大家更好的理解這兩個屬性的使用,下面創建一個伺服器端的文件index.php,用於輸出字元串,然後在瀏覽器端index.html中向伺服器端發送請求,並在控制台輸出狀態值。具體示例如下所示:

創建伺服器端文件:index.php

創建瀏覽器端文件:index.html

在瀏覽器中訪問客戶端文件,按「F12」鍵,切換到控制台,查看輸出結果,具體如下圖所示。

從圖中可以看出,通過onreadystatechange事件屬性可以清晰的感知Ajax狀態的改變,同時使用readyState獲取轉變後的狀態值。例如Ajax從0(未初始化)狀態變成1(初始化)狀態值時,Ajax此時的狀態值為1。

(3)status屬性

status屬性用於返回當前請求的HTTP狀態碼,常見的狀態碼如表所示。

值得一提的是,在感知當前Ajax對象狀態時,為了追求程序的嚴謹性,需要同時判斷當前HTTP狀態status是否等於200(請求成功)。

需要注意的是,Ajax中的statusText屬性,僅當數據發送並接收完畢後,才可以獲取當前請求的響應狀態。

(4)獲取響應信息的相關屬性

當數據接收完畢且請求伺服器的請求成功時,即可以使用Ajax中提供的相關屬性獲取伺服器的響應信息。具體的屬性及相關說明如下表所示。

在上表中,responseText屬性用於返迴文本格式的響應數據;屬性responseBody表示直接從伺服器返回並未經解碼的二進制數據;responseXML屬性用於接收XML數據格式的響應數據。

閱讀全文

與php判斷是否ajax請求相關的資料

熱點內容
php論壇實訓報告 瀏覽:403
java日期字元串轉換成日期 瀏覽:131
linuxsftp連接 瀏覽:934
光伏日發電量演算法 瀏覽:125
小肚皮app怎麼才有vip 瀏覽:616
php全形轉換半形 瀏覽:927
java字元序列 瀏覽:539
杭州編譯分布式存儲區塊鏈 瀏覽:575
材料壓縮曲線 瀏覽:247
linux命令排序 瀏覽:151
手機熱點加密為啥連接不上電腦 瀏覽:979
編譯器合並計算 瀏覽:959
android音頻曲線 瀏覽:343
linuxftp自動登錄 瀏覽:802
運行編譯後網頁 瀏覽:70
閱讀app怎麼使用 瀏覽:319
centos防火牆命令 瀏覽:432
命令行變更 瀏覽:332
linux設備和驅動 瀏覽:207
加密貨幣騙局破案 瀏覽:345