導航:首頁 > 編程語言 > php中的ajax請求

php中的ajax請求

發布時間:2023-08-28 13:26:20

⑴ 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請求

1, 通過傳遞_GET參數的方法簡單實現網頁請求的判斷。
url上這么傳遞:*******.
php?ajaxphp這么判斷:
if(isset($_GET['ajax'])) {
...這是一個ajax請求,然後...}else {
...這不是一個ajax請求,然後...}這種實現方法很差勁,相當容易容易容易偽造。判斷和不判斷么有任何區別。
所以又出來一種自認為很科學的處理方式,這種方式確實有一定的學習價值。
Php獲取系統變數中的xmlHttpRequest判讀。
首先你必須使用jquery,Js發送ajax請求,通過jquery發送的$.ajax, $.get, or $.post方法請求網頁內容時,它會向伺服器傳遞一個HTTP_X_REQUESTED_WITH的參數,這個參數的值是xmlHttpRequest。
Js 代碼:代碼如下復制代碼beforeSend : function (XMLHttpRequest) {
XMLHttpRequest.setRequestHeader(X-Requested-With,XMLHttpRequest);};參數名X-Requested-With,參數值XMLHttpRequest,你可以任意定義。Php取得時候要在參數名前面加上大寫的http字樣代碼如下復制代碼if(!emptyempty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){
//If AJAX Request Then}else{
//something else}
1, 如果你的jquery請求是通過iframe打開網頁的,那麼HTTP_X_REQUESTED_WITH參數不會被傳遞,也就是說你沒有辦法判斷請求的類型。

⑶ php的ajax問題。非同步發送到伺服器的log.php頁面,請問log.php裡面還有其他與aja

樓主,你好,你的意思是,log.php這個頁面上代碼有很多,但你通過ajax只希望執行其中的一部分吧,那就很好辦了,直接ajax請求的時候GET傳一個action=li8的值,然後只需要在log.php的頁面判斷一下, 如果接收到GET["action"]=="li8"的話,就執行對ajax請求過來的代碼,反則就是其他代碼的執行,與ajax處理的代碼就用if區分開了!

⑷ php 怎麼使用ajax,給個例子

實現ajax需要三個文件,一個是html的表單文件,一個是js的核心文件,一個是php的後台文件。

下面的是html文件,當鍵盤按下時觸發showHint方法,在showHint方法中會有ajax的核心內容,實例化,獲取地址,獲取數據並展示等等。

復制代碼 代碼如下:

<html>
<head>
<script src="clienthint.js"></script>
</head>
<body>

<form>
First Name:
<input type="text" id="txt1"
onkeyup="showHint(this.value)">
</form>

<p>Suggestions: <span id="txtHint"></span></p>

</body>
</html>

下面是js的內容clienthint.js。

復制代碼 代碼如下:

var xmlHttp
function showHint(str)
{
if (str.length==0)
{
document.getElementById("txtHint").innerHTML=""
return
}
//獲取xmlHttpObject對象,如果為空,提示瀏覽器不支持ajax
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request")
return
}
//獲取url
var url="gethint.php"
url=url+"?q="+str
url=url+"&sid="+Math.random()
//回調函數,執行動作
xmlHttp.onreadystatechange=stateChanged
//open
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}

function stateChanged()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
//將獲取的信息插入到txtHint中
document.getElementById("txtHint").innerHTML=xmlHttp.responseText
}
}

//獲取xml對象
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}

下面是php的內容。根據ajax對象傳入的參數,獲取相應的數據。

復制代碼 代碼如下:

<?php
// Fill up array with names
$a[]="Anna";
$a[]="Brittany";
$a[]="Cinderella";
$a[]="Diana";
$a[]="Eva";
$a[]="Fiona";
$a[]="Gunda";
$a[]="Hege";
$a[]="Inga";
$a[]="Johanna";
$a[]="Jiqing";
$a[]="Kitty";
$a[]="Linda";
$a[]="Nina";
$a[]="Ophelia";
$a[]="Petunia";
$a[]="Amanda";
$a[]="Raquel";
$a[]="Cindy";
$a[]="Doris";
$a[]="Eve";
$a[]="Evita";
$a[]="Sunniva";
$a[]="Tove";
$a[]="Unni";
$a[]="Violet";
$a[]="Liza";
$a[]="Elizabeth";
$a[]="Ellen";
$a[]="Wenche";
$a[]="Vicky";
//get the q parameter from URL
$q=$_GET["q"];

//lookup all hints from array if length of q>0
if (strlen($q) > 0)
{
$hint="";
for($i=0; $i<count($a); $i++)
{
if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q))))
{
if ($hint=="")
{
$hint=$a[$i];
}
else
{
$hint=$hint." , ".$a[$i];
}
}
}
}

//Set output to "no suggestion" if no hint were found
//or to the correct values
if ($hint == "")
{
$response="no suggestion";
}
else
{
$response=$hint;
}
//output the response
echo $response;
?>

⑸ php 怎麼判斷是否ajax請求

思路:在你進行ajax請求的時候,設置一個文件頭信息的變數,在php端判斷這個信息是否存在以及是否等於自己設置的值,就可以知道是否是ajax請求了。

做法:js端發送頭信息
對象.setRequestHeader("變數名","變數值");
如 xmlHttp..setRequestHeader("X_REQUESTED_WITH","XMLHttpRequest");
php端接受信息,注意此時接受的變數存在 $_SERVER['HTTP_變數名'];中,
如上面的例子則為$_SERVER['HTTP_X_REQUESTED_WITH'];
echo isset($_SERVER['HTTP_X_REQUESTED_WITH'])&&($_SERVER['HTTP_X_REQUESTED_WITH']=='XMLHttpRequest')?'it is ajax':'it is not ajax';

注釋:js和jquery中有些許不同,自己注意一下,再者變數名字不要沖突了

附加:如果這是你自己的網站,你只是自己區別一下的話,這樣就可以了,但是,它是防止不了別人盜用你的ajax數據的,因為這些都是可以模擬的,一個好的方法是設計session驗證之類的。

⑹ PHP許可權系統一些是AJAX請求,怎麼處理

就跳轉就行了,如果A標簽直接訪問,直接跳到錯誤頁面,並返回403.

如果是ajax請求的話,這個請求會報錯的,你只需要在 error 方法里監聽403狀態碼,如果當前請求返回的是一個403, 你直接在客戶端做提示就行了, 或者在客戶端跳轉到你的錯誤頁去。


$.ajax({
//...

error:function(jqXHR){
if(jqXHR.status==403)returnwindow.location.href='error.html';
}
})
閱讀全文

與php中的ajax請求相關的資料

熱點內容
pdf簽名如何刪除 瀏覽:406
按摩解壓腿部足部 瀏覽:291
app切圖用什麼軟體 瀏覽:3
訂購命令英語 瀏覽:659
java正則網址 瀏覽:777
程序員上班可不可以自學 瀏覽:428
空調壓縮機排空氣視頻 瀏覽:283
centos72nginxphp 瀏覽:184
游戲平台用什麼伺服器好 瀏覽:753
保密櫃里的圖片是加密文件嗎 瀏覽:909
php判斷最後一個字元 瀏覽:635
pdf腦區 瀏覽:635
at命令已棄用 瀏覽:490
買點賣出指標源碼 瀏覽:612
36位單片機 瀏覽:428
英雄聯盟山東伺服器地址 瀏覽:214
sd伺服器什麼意思 瀏覽:619
thinkphp去indexphp 瀏覽:63
電腦顯示連接未加密 瀏覽:195
zao伺服器怎麼修改 瀏覽:246