ajax方法XHR.readyState五种状态与示例

 

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        #url{
            width: 1000px;
            height: 30px;
            outline: none;
            border: 1px solid #000;
            border-radius: 5px;
            margin-left: 10px;
        }
        #btn{
            width: 90px;
            height: 30px;
            outline: none;
            border: 1px solid #000;
            border-radius: 5px;
            cursor: pointer;
        }
    </style>
</head>
<body>
    <div>
        <label for="url">
            URL:<input type="text" placeholder="请输入要检测的URL" id="url">
        </label>
    </div>
    <br>
     <button class="btn" id="btn">点击测试</button>
    <div id="content">
        
    </div>
</body>
<script>
    var str = ''
    document.getElementById('btn').onclick = function(){
        var xhr = new XMLHttpRequest();
        var url = document.getElementById('url').value;
        if (!url) {
            alert('请输入URL');
            return false;
        }
        // console.log(url)
        console.log(xhr.status, xhr.readyState) // 0,0
        xhr.onreadystatechange=function(){
            // console.log(xhr)
            if(xhr.status === 200){
                console.log(xhr.status, xhr.readyState)//200,2;200,3;200,4
                str += `status:${xhr.status}`
                if(xhr.readyState === 4){
                    // console.log(xhr.getAllResponseHeaders())
                    str += xhr.getAllResponseHeaders() + '<br/>'
                }
            }
            document.getElementById('content').innerHTML = str;
        }
        xhr.open("GET",url,true);
        console.log(xhr.status, xhr.readyState)// 0,1
        xhr.send(null)
    }
</script>
</html>

  

XHR.readyState == 状态(0,1,2,3,4)

0:请求未初始化,还没有调用 open()。

1:请求已经建立,但是还没有发送,还没有调用 send()。

2:请求已发送,正在处理中(通常现在可以从响应中获取内容头)。

3:请求在处理中;通常响应中已有部分数据可用了,没有全部完成。

4:响应已完成;您可以获取并使用服务器的响应了。

转载于:https://www.cnblogs.com/yiyi17/p/10530183.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码是一个 JavaScript 脚本,用于在输入框内容改变时触发事件,并发送 Ajax 请求到后端来检测用户名是否存在。 让我们逐行解释代码: 1. `document.getElementById("username-input")` 获取了一个具有 id `"username-input"` 的 HTML 元素,这里是一个输入框,用于输入用户名。 2. `addEventListener("input", function() { ... })` 给输入框添加了一个事件监听器,当输入框内容改变时触发。 3. `var username = this.value;` 获取到当前输入框的值,即用户输入的用户名。 4. 创建了一个 XMLHttpRequest 对象 `xhr`,用于发送 HTTP 请求到后端。 5. `xhr.onreadystatechange` 是一个事件处理函数,当 `readyState` 属性发生变化时被触发。在这个代码中,我们检查 `xhr.readyState` 的值是否为 4(表示请求已完成),以及 `xhr.status` 的值是否为 200(表示请求成功)。 6. `JSON.parse(xhr.responseText)` 解析后端返回的响应文本为 JSON 对象,存储在 `response` 变量中。 7. `var errorDiv = document.getElementById("username-error");` 获取具有 id `"username-error"` 的 HTML 元素,这里是一个用于显示错误信息的 `<div>` 元素。 8. 根据后端返回的 JSON 对象中的 `exists` 属性,判断用户名是否已存在。如果存在,则将错误提示信息设置为 `"用户名已存在"`,否则将错误提示信息清空。 9. `xhr.open("POST", "/checkUsernameExistence");` 设置请求的方法为 POST,并指定后端检测用户名存在的接口路径为 `"/checkUsernameExistence"`。 10. `xhr.setRequestHeader("Content-Type", "application/json");` 设置请求的内容类型为 JSON。 11. `xhr.send(JSON.stringify({ username: username }));` 发送包含用户名的 JSON 数据到后端。 这段代码的作用是实时检测用户输入的用户名是否已存在,并根据结果更新页面上的错误提示信息。如果用户名已存在,则在具有 id `"username-error"` 的 `<div>` 元素中显示红色的 `"用户名已存在"` 提示信息,否则清空错误提示信息。 请注意,这段代码仅为示例,您需要根据实际情况进行调整和完善。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值