ThinkPHP JQuery Ajax
ThinkPHP 框架和客戶端是完全分離的,沒有任何的依賴,而服務端返回 ajaxReturn 方法也是通用的。在《ThinkPHP Ajax 使用詳解及實例》一文中,講述的是 ThinkAjax 類庫結合 prototyep 和 mootools 來實現的 Ajax 。事實上可以使用任何 Js 類庫來實現 ThinkPHP Ajax ,本文就以 JQuery 來實現《ThinkPHP Ajax 使用詳解及實例》一文中同樣的功能。
Js 類庫
要使用 ThinkPHP JQuery Ajax,需要加載的 Js 類庫有:
<load href="/Public/Js/Jquery/jquery.js" /> <load href="/Public/Js/Jquery/jquery.form.js" />
說明:jquery.form.js 類庫是一個 JQuery 的插件,在這里用於簡化表單的 ajax 交互,可根據實際情況決定是否加載。
這些 Js 類庫可以在ThinkPHP 2.1 版本官方示例的 Public/Js/Jquery 下獲得,在本節實例代碼下載包也提供,請確認在進行 Ajax 測試之前,正確加載了以上 Js 類庫。
AJAX 返回
使用 ajaxReturn 與 success/error 這兩種方法返回。
關於 ajaxReturn 方法返回具體細節請參閱《ThinkPHP Ajax 使用詳解及實例》一文,success/error 返回請參閱《ThinkPHP success/error 方法返回 Ajax 信息》一文。
ThinkPHP JQuery Ajax 實例
例子功能與《ThinkPHP Ajax 使用詳解及實例》一樣,點擊(實際使用中也可以使用其他事件來替代) “檢測用戶名” 按鈕檢測用戶名是否符合要求,點擊 “提交” 按鈕根據輸入的用戶名返回不同的信息。
html 文件
Public/loginJauery.html 模板,Js 處理函數及 form 表單:
<script language="JavaScript">
<!--
function checkName(){
$.post('-Article/checkName',{'username':$('#username').val()},function(data){
$('#result').html(data.info).show();
$("#result").fadeOut(4000);
},'json');
}
$(function(){
$('#form1').ajaxForm({
beforeSubmit: checkForm, // 表單提交執行前檢測
success: complete, // 表單提交后執行函數
dataType: 'json'
});
function checkForm(){
if( '' == $.trim($('#username').val())){
$('#result').html('用戶名不能為空!').show();
$("#result").fadeOut(4000);
$('#username').focus();
return false;
}
// 可以在此添加其它判斷
}
function complete(data){
if(data.status==1){
$('#result').html(data.info).show();
// 更新列表
username = data.data;
$('#list').html('<span style="color:blue">'+username+'你好!</span>');
}else{
$('#result').html(data.info).show();
// 隱藏上次遺留的信息
$('#list').hide();
}
}
});
//-->
</script>
<div id="result"></div>
<div id="list"></div>
<form name="login" id="form1" method="post" action="-Article/checkLogin">
用戶名: <input type="text" name="username" id="username" />
<input type="button" value="檢查用戶名" onClick="checkName()"><br />
密 碼: <input type="password" name="password" /><br />
<input type="hidden" name="ajax" value="1">
<input type="submit" value="提 交">
</form>
說明
- 點擊“檢查用戶名”按鈕觸發 checkName() 函數,該函數是 JQuery 一個簡單的 POST 請求功能以取代復雜 $.ajax。
- $('#form1').ajaxForm 用於替代原本的按鈕 click 事件 + $.ajax() 實現,這是 jquery.form.js 插件對 form 提交的簡化。
- 與《ThinkPHP Ajax 使用詳解及實例》相比,本文增加了 checkForm() 判斷。
- 返回的數據 data 中,data.data 表示返回的數據,data.info 表示提示信息,data.status 表示狀態,分別與 ajaxReturn 前三個參數對應。
- 由於加載了 jquery.form.js 插件,表單須按一般格式提供 action 值及提交按鈕 type="submit" 。
- 要利用 JQuery 操作更多 html(如追加 html 元素為 append()),請參考 JQuery 手冊。
服務端操作
輸出 loginJquery.html 模板:
public function loginJquery(){
$this->display();
}
checkName 及 checkLogin 操作與《ThinkPHP Ajax 使用詳解及實例》一文完全一致,為便於查看下面再行列出:
public function checkName(){
if ($_POST['username'] == 'admin'){
$this->success('用戶名正確~');
}else{
$this->error('用戶名錯誤!');
}
}
public function checkLogin(){
if ($_POST['username'] == 'admin'){
$this->ajaxReturn($_POST['username'],'用戶名正確~',1);
}else{
$this->ajaxReturn('','用戶名錯誤!',0);
}
}
當表單中輸入的用戶名是 admin 的時候,返回正確信息,否則返回用戶名錯誤的提示。更進一步的,可以將上述 checkLogin 方法進行擴展成為用戶登陸檢測功能模塊。
以上是 ThinkPHP JQuery Ajax 的實現過程及關鍵代碼部分,如果您對 ThinkPHP Ajax 還不是很熟悉,還請同時參考本節前面兩篇文章《ThinkPHP Ajax 使用詳解及實例》與《ThinkPHP success/error 方法返回 Ajax 信息》。
要查看該實例完整代碼,請參閱《ThinkPHP Ajax 實例代碼》,或者點擊此處下載完整代碼。
