一、Ajax-GET 请求获取数据-学生成绩查询系统
实例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Ajax-GET 请求获取数据-学生成绩查询系统</title> </head> <body> <h2>学生成绩查询系统</h2> 请输入您的学号:<input type="text" id="xueid" name="xueid" autofocus> <p id="tishi"></p> <!--<p id="tishi"><span style="color: red">001</span>,张军,您好!2019年第一学期成绩: 数学:65分 语文:75</p>--> <script> //定义获取学号id var input = document.getElementById('xueid'); //定义获取提示 var tishi = document.getElementById('tishi'); //定义Ajax对象 var request = new XMLHttpRequest(); input.addEventListener('keypress',getUserInfo,false); function getUserInfo(ev) { if(ev.key === 'Enter'){ //根据用户输入数据进行判断 switch (true){ //如果输入内容为空判断 case input.value.length === 0: tishi.innerHTML = '<span style="color:red">学号不能为空</span>'; return false; //输入内容必须为整数 case isNaN(input.value): tishi.innerHTML = '<span style="color:red">学号必须是整数</span>'; return false; default: // 监听成功回调 request.addEventListener('readystatechange',successCallback,false); //配置参数 var data = encodeURIComponent(input.value); request.open('GET','php/xue.php?xueid='+data,true); //发送请求 request.send(null); } } } //成功回调 function successCallback() { // 当Ajax对象的readyState状态属性变更为4时, 表示请求成功并返回了数据 if(request.readyState === 4){ //获取页面元素,并将数据渲染到DOM元素中 // console.log(request.responseText); tishi.innerHTML = request.responseText; } } </script> </body> </html>
点击 "运行实例" 按钮查看在线实例
xue.php后台PHP代码:
实例
<?php $xueId = isset($_GET['xueid']) ? $_GET['xueid'] : null; $userInfo = [ ['xueid'=>1, 'username'=>'张军', 'gender'=>'男', 'age'=>16,'shuxue'=>"96",'yuwen'=>'100'], ['xueid'=>2, 'username'=>'李俊明', 'gender'=>'男', 'age'=>15,'shuxue'=>"66",'yuwen'=>'80'], ['xueid'=>3, 'username'=>'王丽', 'gender'=>'女', 'age'=>23,'shuxue'=>"100",'yuwen'=>'100'], ]; $res = ''; foreach ($userInfo as $user) { if ($user['xueid'] === intval($xueId)) { $res .= '学号:'.$user['xueid'].'<br/>'.$user['username'].',您好!<br/>'.$user['gender'].','.$user['age'].'岁<br>成绩:'.'数学:'.$user['shuxue'].' 语文:'.$user['yuwen']; } } echo empty($res) ? '<span style="color: red;">没有找到该学号用户</span>' : $res; exit;
运行实例 »
点击 "运行实例" 按钮查看在线实例
本地运行效果截图如下:
二、Ajax - POST 请求数据-用户登陆案例
实例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Ajax - POST 请求数据-用户登陆案例</title> </head> <body> <h2>用户登陆</h2> <form action="" name="login"> <p> <label for="username">用户名:</label> <input type="text" name="username" id="username" placeholder="Joe"> </p> <p> <label for="password">密码:</label> <input type="password" name="password" id="password" placeholder="*****"> </p> <p> <label for="email">邮箱:</label> <input type="text" name="email" id="email" placeholder="admin@php.cn"> </p> <p> <button type="button" name="submit">登陆</button> </p> </form> <script> //1.获取相关变量 // 获取表单元素 var login = document.forms.namedItem('login'); //获取按钮 var btn = login.submit; //创建Ajax对象 var request = new XMLHttpRequest(); /**********************************************************/ login.username.addEventListener('blur',isEmpty,false); login.email.addEventListener('blur',isEmpty,false); login.password.addEventListener('blur',isEmpty,false); //非空验证 function isEmpty(ev) { if(ev.target.value.length === 0){ //1.创建非空验证提示信息 if(ev.target.nextElementSibling === null){ var tips = document.createElement('span'); tips.style.color = 'red'; //根据事件目标设置提示信息 switch(ev.target.name){ case 'username': tips.innerText = '用户名不能为空'; break; case 'email': tips.innerText = '邮箱不能为空'; break; case 'password': tips.innerText = '密码不能为空'; break; default: tips.innerText = '未定义错误'; } ev.target.parentNode.appendChild(tips); } //将焦点锁定到错误数据上 ev.target.focus(); } } // 2.表单非空验证 login.username.addEventListener('blur',isEmpty,false); login.email.addEventListener('blur',isEmpty,false); login.password.addEventListener('blur',isEmpty,false); //定义函数isEmpty function isEmpty(ev) { if(ev.target.value.length === 0){ //1.创建非空验证提示信息 if(ev.target.nextElementSibling === null){ var tips = document.createElement('span'); tips.style.color = 'red'; //根据事件目标设置提示信息 switch(ev.target.name){ case 'username': tips.innerText = '用户名不能为空'; break; case 'email': tips.innerText = '邮箱不能为空'; break; case 'password': tips.innerText = '密码不能为空'; break; default: tips.innerText = '未定义错误'; } ev.target.parentNode.appendChild(tips); } //将焦点锁定到错误数据上 ev.target.focus(); } } /************************************************/ //3.用户输入内容时,为控件input事件添加监听器 login.username.addEventListener('input',clearTips, false); login.password.addEventListener('input',clearTips, false); login.email.addEventListener('input',clearTips,false); //定义事件监听方法clearTips function clearTips(ev) { var tips = ev.target.nextElementSibling; if(tips !== null){ //移除提示信息元素 tips.parentNode.removeChild(tips); } } /******************************************************/ // 4.Ajax异步验证 btn.addEventListener('click',check,false); //click事件监听方法 function check(ev) { //获取要提交的数据 var username = login.username.value; var password = login.password.value; var email = login.email.value; //当没有输入任何相间时,禁止提交 if(username.length ===0 || password.length === 0 || email.length ===0){ //移除当前点击事件 ev.target.removeEventListener('click',check,false); //模拟第一个输入框的blur事件,等待用户输入数据 var blurEvent = new Event('blur'); login.username.dispatchEvent(blurEvent); return false; } //以表单键值对方式封装需要发送的数据 var data = 'username='+username+'&email='+email+'&password='+password; //监听事件回调 request.addEventListener('readystatechange',successCallback,false); // 配置参数 request.open('POST','php/checks.php',true); //关键步骤:POST请求,需要设置请求头:以表单数据格式发送数据 request.setRequestHeader('content-type','application/x-www-form-urlencoded;charset=utf-8'); //发送请求 request.send(data); } function successCallback(ev) { // console.log(ev.target); if (request.readyState === 4){ console.log(request.responseText); } } </script> </body> </html>
运行实例 »
点击 "运行实例" 按钮查看在线实例
后台checks.php请求代码:
实例
<?php session_start(); // 获取表单提交的数据 $username = $_POST['username']; $email = $_POST['email']; $password = sha1($_POST['password']); // 为简化代码,不用数据表验证,使用硬编码,只验证邮箱与密码 if ($username === 'admin' && $password === sha1('123456')) { $_SESSION['username'] = $username; $_SESSION['email'] = $email; echo json_encode(['status'=>1, 'message'=>'验证成功']); } else { echo json_encode(['status'=>0, 'message'=>'验证失败']); } exit;
运行实例 »
点击 "运行实例" 按钮查看在线实例
本地运行效果截图: