Ajax四个步骤方法封装

register.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>注册界面</title>
    <script type="text/javascript" src="myutils.js"></script>
    <script>
        window.onload = function() {
                var username = document.querySelector("#username");
                var email = document.querySelector("#email");
                var phone = document.querySelector("#phone");

                //用户唯一性校验
                username.onblur = function() {
                    var usernameValue = username.value;
                    var type = "get";
                    var url = "checkUsername.php";
                    var params = "uname=" + usernameValue;
                    var dataType = "text";

                    myAjax(type, url, params, dataType, function(result) {
                        var username_result = document.querySelector("#username_result");
                        if (result == "ok") {
                            username_result.innerText = "用户名可以使用";
                        } else {
                            username_result.innerText = "用户名已经被注册";
                        }
                    }, true);


                }
            }
            //邮箱唯一性校验
            //手机唯一性校验
    </script>
</head>

<body>
    <h1>注册界面</h1>
    <form action="">
        用户名:<input type="text" id="username"><span id="username_result"></span><br> 邮箱:
        <input type="text" id="email"><span id="email_result"></span><br> 手机号码:
        <input type="text" id="phone"><span id="phone_result"></span><br>
    </form>
</body>

</html>

checkUsername.php

<?php
    $username=$_GET["uname"];

    if($username == 'zhangsan'){

        echo "username exit!";

    }else{
        echo "ok";
    }

?

myutils.js

//ajax四个步骤封装
 function myAjax(type, url, params, dataType, callback, async) {

     //创建XMLHttpRequest这个对象 需要注意兼容处理
     var xhr = null;
     if (window.XMLHttpRequest) {
         xhr = new XMLHttpRequest();
     } else {
         xhr = new ActiveXObject("Microsoft.XMLHTTP");
     }

     //判断提交方式是post还是get,两者的url格式不相同
     if (type == "get") {
         if (params && params != "") {
             url += "?" + params;
         }

     }
     //准备发生 true 异步; false 同步
     xhr.open(type, url, true);
     if (type == "get") {
         //执行发送
         xhr.send(null);
     } else if (type == "post") {
         //设置xhr的请求头信息,这个步骤仅仅是针对于post请求才有的
         xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
         xhr.send(params);
     }

     //设置回调函数
     if (async) {
         xhr.onreadstatechange = function() {
             if (xhr.readState == 4) {
                 if (xhr.readStatus == 200) {
                     var result = null;
                     if (dataType == "json") {
                         result = xhr.responseText;
                         result = JSON.parse(result);
                     } else if (dataType == "xml") {
                         result = xhr.responseXML;
                     } else {
                         result = xhr.responseText;
                     }
                     if (callback) {

                         callback(result);
                     }

                 }
             }
         };
     } else {
         if (xhr.readState == 4) {
             if (xhr.readStatus == 200) {
                 var result = null;
                 if (dataType == "json") {
                     result = xhr.responseText;
                     result = JSON.parse(result);
                 } else if (dataType == "xml") {
                     result = xhr.responseXML;
                 } else {
                     result = xhr.responseText;
                 }
                 if (callback) {
                     callback(result);
                 }

             }
         }
     }
 }

运行结果如下:
在这里插入图片描述
这个运行结果并不是我想要的结果,正确结果应该是当我鼠标离开用户名输入框时,它会在用户名输入框后面提醒我,该用户名是否可以使用。我看了老半天没有看出问题来,求大佬们指点。。。。。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

*neverGiveUp*

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值