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的三種數據請求方式

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章