最近在做項目時遇到了一些需要從頁面用ajax提交數據到后台的操作,無奈本人技術有限,網上苦尋,研究了一下ajax和thinkPHP的結合,黃天不負苦心人,終於搞定了。
閑話少敘,進入正題:我需要從頁面中的一系列列表中,提交數據id到后台,然后從后台接收id數據,然后進行操作。
$.ajax({ type:"GET", url:"__URL__/DelBatch", data:{id:ids}, dataType: "json", success:function(ss){ alert(ss); } });
參數解析:
type:表示請求的方式,post或get,默認為get。
url:數據所要提交到的url地址。
data:表示所要提交的數據。JSON格式(鍵值對)。代碼中第一個id表示變量名,第二個ids表示具體的值,即第一個id變量所對應的值。
dataType:預期服務器返回的數據類型。若不指定,jquery將自動根據http包MIME信息來智能判斷(w3c抄襲,具體不懂,大概是根據MIME的類型來返回值的類型)
success:請求成功后后調用的回調函數。
ajax請求數據還有很多參數,比如beforeSend、error等,大家若想詳細了解可以上網去查。
有了這段代碼,用戶在執行點擊等操作時就可以將數據以get的方式提交到后台。
后台數據接收:
function DelBatch(){ if(IS_GET) { $id=$_GET["id"]; $this->ajaxReturn($id); } }
thinkPHP中具有對請求類型進行判斷的封裝,其中具有對幾種請求類型的判斷:
IS_POST:判斷是否是POST方式提交
IS_GET:判斷是否是GET方式提交
IS_AJAX:判斷是否是ajax方式提交
public function check(){ if(IS_GET){ //若是,執行響應操作 } else{ $this->error("非法請求!"); } }
在上述代碼中,首先進行了請求類型的判斷,若請求一致,則進行相應操作,否則,顯示當前請求為非法請求。
插入一段,回到正題:
在后台接收數據時,首先同樣進行了請求的判斷。然后通過$id=$_GET["id"]得到頁面提交過來的數據,然后進行數據返回。
ThinkPHP對ajax有很好的支持,系統\Think\Controller類中提供了ajaxReturn方法用於對ajax調用后返回數據給客戶端,支持JSON,JSONP,XML和EVAL四種方式返回數據的類型。默認采用JSON格式返回數據。
開始做時,僅僅在方法中echo了一個數據出來,苦思半天,以為在提交數據時沒有找到相應方法,其實不然,thinkPHP封裝了ajaxReturn方法,專門用於將數據返回供頁面使用。所以,在頁面的success的function中接收到數據,然后將數據alert顯示。
隨筆一篇,記錄一下,希望對大家有所幫助。