欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)激活碼778899分享:okhttp 網(wǎng)絡(luò)-Ajax

柚子快報(bào)激活碼778899分享:okhttp 網(wǎng)絡(luò)-Ajax

http://yzkb.51969.com/

文章目錄

前言一、Ajax優(yōu)點(diǎn):缺點(diǎn):

二、使用步驟XNLHttpRequest對(duì)象完整代碼

總結(jié)

前言

本文主要記錄Ajax技術(shù)的簡(jiǎn)介,以及用法。

一、Ajax

Ajax是一組用于在Web瀏覽器和Web服務(wù)器之間進(jìn)行異步通信的Web開發(fā)技術(shù)。 它代表著Asynchronous JavaScript and XML(異步JavaScript和XML),盡管XML并不總是作為數(shù)據(jù)格式使用。 通過Ajax,Web應(yīng)用程序可以在不重新加載整個(gè)頁面的情況下更新頁面的部分內(nèi)容。這樣可以實(shí)現(xiàn)更加交互和響應(yīng)式的用戶體驗(yàn)。 Ajax使用JavaScript發(fā)送請(qǐng)求到服務(wù)器并異步處理響應(yīng),而不會(huì)阻塞用戶界面。 可以通過 JavaScript 和XNLHttpRequest對(duì)象來向服務(wù)器請(qǐng)求數(shù)據(jù)

Ajax可以用于執(zhí)行各種任務(wù),例如從服務(wù)器檢索數(shù)據(jù)、提交表單數(shù)據(jù)和動(dòng)態(tài)更新內(nèi)容。 它通常用于現(xiàn)代Web應(yīng)用程序中,用于創(chuàng)建自動(dòng)完成搜索框、實(shí)時(shí)更新和無限滾動(dòng)等交互功能。

優(yōu)點(diǎn):

提高用戶體驗(yàn):通過減少頁面重載和刷新,使得網(wǎng)站變得更加靈活和動(dòng)態(tài)減輕服務(wù)器負(fù)載:可以有效減少服務(wù)器接收到的請(qǐng)求次數(shù)和需要響應(yīng)的數(shù)據(jù)量,從而減輕服務(wù)器負(fù)擔(dān)提高響應(yīng)速度:可以異步獲取數(shù)據(jù)并更新頁面,從而提高響應(yīng)速度增加交互:使頁面變得可交互性

缺點(diǎn):

對(duì)搜索引擎優(yōu)化(SEO)不友好,爬蟲無法抓取Ajax中的內(nèi)容與URL ===>考慮用SSR服務(wù)端渲染技術(shù)需要考慮安全性問題,數(shù)據(jù)和網(wǎng)絡(luò)安全需要采取對(duì)應(yīng)的措施

二、使用步驟

XNLHttpRequest對(duì)象

創(chuàng)建對(duì)象xhr:

const xhr = new XMLHttpRequest()

open方法:接收三個(gè)參數(shù)分別是 請(qǐng)求方式、請(qǐng)求地址、是否異步:默認(rèn)為true

xhr.open('post','http://localhost:3000/api/post',true)

setRequestHeader方法:用于為請(qǐng)求的HTTP頭設(shè)置值。

setRequestHeader("header", "value")

onreadystatechange方法:監(jiān)聽服務(wù)端返回的數(shù)據(jù)

xhr.onreadystatechange = () =>{

console.log(xhr)

if (xhr.readyState === 4 && xhr.status === 200) {

console.log(xhr.responseText)

}

}

readyState屬性:

0:未初始化,XNLHttpRequest已經(jīng)創(chuàng)建,但未調(diào)用open方法1:已打開,open方法已調(diào)用,send方法未調(diào)用2:已發(fā)送,send方法已調(diào)用,服務(wù)端接收到請(qǐng)求3:正在接收,服務(wù)器正在處理請(qǐng)求并返回?cái)?shù)據(jù)4:完成,服務(wù)端已完成數(shù)據(jù)傳輸 status屬性: 200成功 400參數(shù)錯(cuò)誤 403沒有權(quán)限 401token找不到 404未找到 500服務(wù)器錯(cuò)誤send方法:給服務(wù)端發(fā)送的數(shù)據(jù)

xhr.send(JSON.stringify({name:'smz'}))

abort方法:用于停止或放棄當(dāng)前異步請(qǐng)求。必須在open方法后,無法恢復(fù)。

stop.addEventListener('click',()=>{

xhr.abort()

})

getResponseHeader方法:用于以字符串形式返回指定的HTTP頭信息。

getResponseHeader("headerLabel")

getAllResponseHeaders方法:用于以字符串形式返回完整的HTTP頭信息。

getAllResponseHeaders()

監(jiān)聽進(jìn)度:

給xhr對(duì)象添加一個(gè)progress事件,返回event

event.loaded:當(dāng)前進(jìn)度 event.total:總進(jìn)度

xhr.addEventListener('progress',(event)=>{

console.log(event.loaded,event.total)

})

設(shè)置超時(shí):xhr.timeout = 3000 超時(shí)回調(diào):監(jiān)聽timeout事件

xhr.addEventListener('timeout',()=>{

alert('請(qǐng)求超時(shí)')

})

中斷回調(diào):監(jiān)聽abort事件

xhr.addEventListener('abort',()=>{

console.log('請(qǐng)求中斷')

})

監(jiān)聽load事件:也可以監(jiān)聽請(qǐng)求是否成功,就不用判斷readyState的值

xhr.addEventListener('load',()=>{

if (xhr.status === 200){

console.log('請(qǐng)求成功,觸發(fā)onload')

}

})

post請(qǐng)求:請(qǐng)求參數(shù)要放在send()中

完整代碼

前端代碼

Title

進(jìn)度條

后端代碼:這里用的node

const express = require('express')

const app = express()

const multer = require('multer')

const single = multer.diskStorage({

destination: (req, file, cb) => {

cb(null, './upload')

},

filename: (req, file, cb) => {

cb(null, Date.now() + file.originalname)

}

})

const upload = multer({

single

})

app.get('/api/txt',(req,res)=>{

res.setHeader('Access-Control-Allow-Origin','*')

const {name} = req.query // 函數(shù)名

let text = ''

for(let i=0;i<10000;i++){

text += `${name}Ajax`

}

res.send( text)

})

app.use(express.json())

app.use(express.urlencoded({extended:true}))

// post請(qǐng)求

app.post('/api/post',(req,res)=>{

res.setHeader('Access-Control-Allow-Origin','*')

console.log(req.body)

res.json({

code:200,

data:{

name: req.body.name

}

})

})

// 預(yù)檢請(qǐng)求放行

app.options('/api/*', (req,res) => {

res.setHeader("Access-Control-Allow-Origin","*")

res.setHeader("Access-Control-Allow-Headers", "*");

res.end()

})

//傳文件

app.post('/api/upload',upload.single('file'),(req,res)=>{

console.log(req.file)

res.setHeader('Access-Control-Allow-Origin','*')

res.json({

code:200

})

})

app.listen(3000,()=>{

console.log('server is running')

})

總結(jié)

axios第三方庫對(duì)Ajax做了一些封裝,本文主要記錄了Ajax的介紹與使用。

柚子快報(bào)激活碼778899分享:okhttp 網(wǎng)絡(luò)-Ajax

http://yzkb.51969.com/

精彩鏈接

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/18800027.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄