有两个问题问下老师
跟着老师敲的源码如下:
ajax源码:
var $ = {
ajax: function (options) {
var xhr = new XMLHttpRequest(); //XMLHttpRequest对象
var url = options.url; //url地址
var method = options.method || 'GET'; //传输方式, 默认为get
var async = typeof options.async === 'undefined' ? true : options.async; //同步或者异步
var data = options.data || null; //参数
var params = '';
var callback = options.success; //ajax请求成功后的回调函数
var error = options.error; //ajax请求失败后的回调函数
//将data的对象字面量形式转换成字符串形式
if(data){
for (var i in data){
params += i + '=' + data[i] + '&';
}
params = params.replace(/&$/,'');
}
//根据method的值改变URL
if(method === 'GET'){
url += '?' + params;
}
//创建及发送请求
xhr.open(method,url,async);
xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xhr.send(params);
xhr.onreadystatechange = function () {
if (xhr.readyState === 4){
if((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304){
callback && callback(JSON.parse(xhr.responseText));
}
else {
error && error();
}
}
}
}
};
js源码:
var user = document.getElementById('user');
var pwd = document.getElementById('pws');
var sigup = document.getElementById('sigup-btn');
var userInfo = document.getElementById('user_info');
var userIcon = document.getElementById('user_icon');
//检测用户
function checkUser(){
var userVal = user.value;
var userReg = /^1[3578]\d{9}$/;
//验证手机号码是否有效
if(!userReg.test(userVal)){
userInfo.innerHTML = '手机号码无效!';
userIcon.className = 'no';
}
else {
userInfo.innerHTML = '';
userIcon.className = '';
//发起请求
$.ajax({
url: 'register/server/isUserRepeat.php',
data:{username: userVal},
success: function (a) {
userIcon.className = 'ok';
console.log(a)
}
})
}
}
//绑定事件, 检测用户是否注册过
user.addEventListener('blur',checkUser);
然后打印出来就是这样(跟老师打印的结果不一样,结果为“参数有误“了):
感觉这种情况语法没有错误, 应该是数据的问题, 请老师帮忙分析一下.
然后第二个问题就是关于success 回调函数的参数, 也就是上面代码中参数a,不明白这个参数表示什么意思, 是success回调函数默认的还是人为设置的? 传入这个参数又有什么作用呢?
正在回答 回答被采纳积分+1
完整代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Ajax实例_检测用户与注册</title>
<style>
*{
margin: 0;
padding: 0;
}
body{
background-color: #333333;
}
.register{
width: 300px;
height: 270px;
margin: 80px auto;
padding: 15px 30px;
background-color: #eeeeee;
border-radius: 5px;
}
.title{
height: 35px;
}
.title span{
font-size: 16px;
font-weight: bold;
color: #666666;
margin-right: 30px;
cursor: pointer;
}
.title span.current{
color: #ff0000;
}
.form div{
width: 290px;
height: 30px;
border-radius: 8px;
background-color: #ffffff;
margin-bottom: 25px;
padding: 8px 10px;
position: relative;
}
.form div span{
display: inline-block;
padding-top: 4px;
padding-right: 3px;
color: #666666;
}
.form div input{
border: none;
outline: none;
font-size: 16px;
color: #666666;
background: none;
}
.form div i{
width: 16px;
height: 16px;
position: absolute;
right: 12px;
top: 14px;
}
.form div i.ok{
background: url("img/icon.png") no-repeat 0 -67px;
}
.form div i.no{
background: url("img/icon.png") no-repeat -17px -67px;
}
.form .info{
margin-top: 22px;
color: #ff0000;
padding-left: 2px;
}
.button{
padding-top: 7px;
}
.button a{
display: block;
width: 100%;
height: 45px;
margin: 0 auto;
line-height: 45px;
text-align: center;
text-decoration: none;
background-color: #f20d0d;
color: #ffffff;
border-radius: 30px;
font-size: 16px;
}
</style>
</head>
<body>
<div class="register">
<p class="title">
<span>登 录</span>
<span class="current">注 册</span>
</p>
<div class="form">
<div>
<span>+86</span>
<input type="text" name="user" id="user"
placeholder="请输入注册手机号码" autocomplete="off">
<i id="user_icon"></i>
<p class="info" id="user_info"></p>
</div>
<div>
<input type="password" name="pwd" id="pwd"
placeholder="请设置密码">
<i id="pwd_icon"></i>
<p class="info" id="pwd_info"></p>
</div>
</div>
<p class="button">
<a href="javascript: void (0)" id="sigup-btn" class="btn">
注 册
</a>
</p>
</div>
<script type="text/javascript">
var $ = {
ajax: function (options) {
var xhr = new XMLHttpRequest(); //XMLHttpRequest对象
var url = options.url; //url地址
var method = options.method || 'GET'; //传输方式, 默认为get
var async = typeof options.async === 'undefined' ? true : options.async; //同步或者异步
var data = options.data || null; //参数
var params = '';
var callback = options.success; //ajax请求成功后的回调函数
var error = options.error; //ajax请求失败后的回调函数
//将data的对象字面量形式转换成字符串形式
if(data){
for (var i in data){
params += i + '=' + data[i] + '&';
}
params = params.replace(/&$/,'');
}
//根据method的值改变URL
if(method === 'GET'){
url += '?' + params;
}
//创建及发送请求
xhr.open(method,url,async);
xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xhr.send(params);
xhr.onreadystatechange = function () {
if (xhr.readyState === 4){
if((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304){
callback && callback(JSON.parse(xhr.responseText));
}
else {
error && error();
}
}
}
}
};
</script>
<script type="text/javascript">
var user = document.getElementById('user');
var pwd = document.getElementById('pwd');
var sigup = document.getElementById('sigup-btn');
var userInfo = document.getElementById('user_info');
var userIcon = document.getElementById('user_icon');
var pwdInfo = document.getElementById('pwd_info');
var pwdIcon = document.getElementById('pwd_icon');
//检测用户
function checkUser(){
var userVal = user.value;
var userReg = /^1[3578]\d{9}$/;
//验证手机号码是否有效
if(!userReg.test(userVal)){
userInfo.innerHTML = '手机号码无效!';
userIcon.className = 'no';
}
else {
userInfo.innerHTML = '';
userIcon.className = '';
//发起请求
$.ajax({
url: 'register/server/isUserRepeat.php',
data:{username: userVal},
success: function (a) {
if(a.code === 1){
userIcon.className = 'ok';
}
else if(a.code === 0){
userIcon.className = 'no';
userInfo.innerHTML = a.msg;
}
else{
userInfo.innerHTML = '检测失败, 请重试...'
}
console.log(a)
}
})
}
}
//检测密码
function checkPwd(){
var pwdVal = pwd.value;
var pwsReg = /^\w{5,12}$/;
if(!pwsReg.test(pwdVal)){
pwdInfo.innerHTML = '请输入5到12位的字母, 数字及下划线';
pwdIcon.className = 'no';
}
else {
pwdInfo.innerHTML = '';
pwdIcon.className = '';
}
}
//绑定事件, 检测用户是否注册过
user.addEventListener('blur',checkUser);
//绑定事件, 检测密码有效性
pwd.addEventListener('blur',checkPwd);
</script>
</body>
</html>
1, 第一次打开页面的时候回报错如下(刷新一次后就没该错误了, 请老师解答一下):
2, 代码中跟路径有关地方, 在我这边的路径如下:
3, 输入合法的手机号码打印就是“参数错误”,如下(请老师解答一下):
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星