xhr

xhr数据请求流程

1.前端初始化xhr对象,设置请求方法:get方法,post方法,form方法, 以及请求接口 open() 此时xhr.readyState=0

开始发送数据到后台 send()

<body>
    <button onclick="get()">xhr之get请求</button>
    <button onclick="post()">xhr之post请求</button>
</body>
//创建一个数据请求的实例化对象
//使用get方法
<script>
    function get(){
        var xhr = new XMLHttpRequest()
        xhr.open('get','/getTest?name=张三&age=17')
        xhr.send()
    }
//使用post方法
    function post(){
        var xhr =new XMLHttpRequest()
        // post请求方式 接口后面不能追加参数
        xhr.open('post','/postTest')
        // 如果使用post请求方式 而且参数是以key=value这种形式提交的
        // 那么需要设置请求头的类型
        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded')
        xhr.send('name=张三&age=17')
    }
</script>

2.后端接受前端发送过来的数据,此时xhr.readyState = 1

3.将数据从后台返回给前端,res.send()发送数据到前端,此时xhr.readyState = 2

//五句固定代码
var express=require('express')
var bodyParser= require('body-parser')
var web = express()
//public 为允许前端访问的静态文件夹
web.use(express.static('public'))
web.use(bodyParser.urlencoded({extended:false}))

//使用get方法
//参数 req 前端传递给后端的数据  参数res 后端传递给前端的数据
web.get('/getTest',function(req,res){
    var name = req.query.name
    var des = req.query.des
    setTimeout(function(){
        res.send('get方法接受成功')
    },2000)
})
//使用post方法
//参数 req 前端传递给后端的数据  参数res 后端传递给前端的数据
web.post('/postTest',function(req,res){
    var name = req.body.name
    var age = req.body.age
    setTimeout(function(){
        res.send('post方法接受成功')
    },2000)
})

4.前端接受后台发送过来的数据,接受部分数据时 xhr.readyState = 3,全部数据接收完毕 xhr.readyState=4

xhr.onreadystatechange = function(){
    if(xhr.readyState == 4){
        alert('数据全部接收完毕')
    }
}

xhr之form请求

form请求可以看成是在post请求上的延伸

上面的前端代码要改成下面的样子

<body>
    <button onclick="get()">xhr之get请求</button>
    <button onclick="post()">xhr之post请求</button>
    <button onclick="form()">xhr之form请求</button>
</body>
//创建一个数据请求的实例化对象
//使用get方法
<script>
    function get(){
        var xhr = new XMLHttpRequest()
        xhr.open('get','/getTest?name=张三&age=17')
        xhr.send()
    }
//使用post方法
    function post(){
        var xhr =new XMLHttpRequest()
        // post请求方式 接口后面不能追加参数
        xhr.open('post','/postTest')
        // 如果使用post请求方式 而且参数是以key=value这种形式提交的
        // 那么需要设置请求头的类型
        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded')
        xhr.send('name=张三&age=17')
    }
//使用form方法
    function post(){
        var xhr =new XMLHttpRequest()
        var form = new FormDate()
        form.append('name','张三')
        form.append('age','17')
        xhr.open('post','/formTest')
        xhr.send(form)
    }
</script>

后端中要添加如下代码

//引入multer模块
var multer = require('multer')
//初始化multer对象
var form = multer()
web.post('/test',form.array(),function(req,res){
    name = req.body.name
    age = req.body.age
    res.send('姓名是'+name+',年龄是'+age)
})

以上就是使用xhr的三种数据请求方式

 

 

XHR 是 XMLHttpRequest 的缩写,它是一种可以在不重新加载整个页面的情况下,通过 JavaScript 发送 HTTP 请求和接收服务器响应的技术。在网页开发中,我们经常会用到 XHR 来实现异步数据交互,比如获取远程数据、发送表单数据等等。 要实现一个简单的 XHR 请求,我们可以通过以下几个步骤来操作: 1. 创建一个 XMLHttpRequest 对象 2. 指定请求的方法、URL 和是否异步 3. 发送请求 4. 监听 XHR 对象的状态变化,并在接收到响应后处理数据 下面是一个简单的示例代码: ```javascript var xhr = new XMLHttpRequest(); xhr.open('GET', 'https://api.example.com/data', true); xhr.send(); xhr.onreadystatechange = function() { if (xhr.readyState === XMLHttpRequest.DONE) { if (xhr.status === 200) { console.log('成功收到响应:', xhr.responseText); } else { console.log('请求出错:', xhr.status); } } }; ``` 在这个例子中,我们创建了一个 XHR 对象,并使用 GET 方法向 https://api.example.com/data 发送了一个异步请求。然后,我们监听 XHR 对象的状态变化,当 readyState 变为 XMLHttpRequest.DONE 时,表示请求完成。此时我们可以通过 status 属性来判断请求的状态,通过 responseText 属性来获取服务器返回的数据。 总之,XHR 是一种非常有用的技术,可以让我们在网页中实现更加流畅的用户体验,并为用户提供更加丰富的交互功能。希望这个回答能够帮助你更好地了解并使用 XHR
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值