ThinkPHP結合Ajax實現使用者名稱的校驗
阿新 • • 發佈:2019-02-12
在模板檔案中通過ajax獲取到使用者名稱,然後在控制器中將使用者名稱與資料庫比較,返回校驗結果給模板檔案。
模板檔案路徑shop/Home/View/User/register.html
<!--register.html-->
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<script type="text/javascript">
var urlpath = "{$smarty.const.__CONTROLLER__}";
//ajax無重新整理方式校驗使用者名稱
function checkname(){
//(1)獲取被校驗的使用者名稱資訊
var nm = document.getElementById('User_username').value;
//(2)ajax抓取到使用者名稱傳遞給伺服器端進行校驗
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function (){
if(xhr.readyState == 4){
document.getElementById('namecheck').innerHTML = xhr.responseText;
}
}
//tp框架使用模式:分組/控制器/操作方法/方法引數
//xhr.open('get', "/shop/index.php/User/checkNM/" + nm);//預設分組為Home
xhr.open('get', urlpath + "/checkNM/" + nm);
}
</script>
</head>
<body>
<tr>
<td>
<label for="User_username">使用者名稱</label>
</td>
<td>
<input type="text" name="username" value="" id="User_username" onblur="checkname()">
<span id="namecheck">{$errorInfo.username|default:""}</span>
</td>
</tr>
</body>
</html>
控制器檔案路徑shop/Home/Controller/User/UserController.class.php
//UserController.class.php
<?php
//名稱空間
namespace Home\Controller;
use Think\Controller;
//前臺使用者控制器
class UserController extends Controller{
//使用者名稱校驗
function checkNM($name){
//在資料庫中根據條件查詢結果
$info = D('User')->where("username='$name'")->find();
if($info){
echo "<span style='color:red'>使用者名稱已存在,請換一個</span>";
}else {
echo "<span style='color:green'>恭喜,使用者名稱可以使用</span>";
}
exit;
}
}