ThinkPHP 和 Ajax 之間的互動
最近正在學習PHP,在學習過程中遇到一些問題,其中的一個問題就是ThinkPHP 和 Ajax之間的資料交換。
ajax主要功能在於:通過在後台與伺服器進行少量資料交換,AJAX可以使網頁實現非同步更新。也就是在頁面無重新整理的情況下實現資料或者表單的提交。
1. AJAX的基本使用
使用GET方法:
$.ajax({ type:"GET", url:"__URL__/deleteUser", data:{id:ids}, dataType: "json", success:function(ss){ alert(ss); } });
使用POST方法:
// FormData() 是傳遞的資料
var form = new FormData();form.append("id",id);
$.ajax({ type:"POST", url:"__URL__/deleteUser", data:form, processData: false, // 不處理資料 contentType: false, success:function(ss){ alert(ss); // window.history.go(-1); }, error:function(){ alert("錯誤"); } });
參數解析:
type:表示請求的方式,post或get,預設為get。
url:資料所要提交到的url地址。
data:表示所要提交的資料。JSON格式(索引值對)。代碼中第一個id表示變數名,第二個ids表示具體的值,即第一個id變數所對應的值。
dataType:預期伺服器返回的資料類型。若不指定,jquery將自動根據http包MIME資訊來智能判斷(w3c抄襲,具體不懂,大概是根據MIME的類型來傳回值的類型)
success:請求成功後後調用的回呼函數。
ajax請求資料還有很多參數,比如beforeSend、error等,大家若想詳細瞭解可以上網去查。
有了這段代碼,使用者在執行點擊等操作時就可以將資料以get的方式提交到後台。
function deleteUser(){ if(IS_GET) { $id=$_GET["id"]; $this->ajaxReturn($id); }
//if(IS_POST) //{ // $id=$_POST["id"]; // $this->ajaxReturn($id); //}
}
thinkPHP中具有對請求類型進行判斷的封裝,其中具有對幾種請求類型的判斷:
IS_POST:判斷是否是POST方式提交
IS_GET:判斷是否是GET方式提交
IS_AJAX:判斷是否是ajax方式提交
在後台接收資料時,首先同樣進行了請求的判斷。然後通過$id=$_GET["id"]得到頁面提交過來的資料,然後進行資料返回。
ThinkPHP對ajax有很好的支援,系統\Think\Controller類中提供了ajaxReturn方法用於對ajax調用後返回資料給用戶端,支援JSON,JSONP,XML和EVAL四種方式返回資料的類型。預設採用JSON格式返回資料。