当前位置: 首页 > news >正文

建设网站怎么备案网站设计建设公司服务商

建设网站怎么备案,网站设计建设公司服务商,低调与华丽wordpress模,动漫制作技术与动漫设计文章目录 前言一、Ajax优点#xff1a;缺点#xff1a; 二、使用步骤XNLHttpRequest对象完整代码 总结 前言 本文主要记录Ajax技术的简介#xff0c;以及用法。 一、Ajax Ajax是一组用于在Web浏览器和Web服务器之间进行异步通信的Web开发技术。 它代表着Asynchronous Java… 文章目录 前言一、Ajax优点缺点 二、使用步骤XNLHttpRequest对象完整代码 总结 前言 本文主要记录Ajax技术的简介以及用法。 一、Ajax Ajax是一组用于在Web浏览器和Web服务器之间进行异步通信的Web开发技术。 它代表着Asynchronous JavaScript and XML异步JavaScript和XML尽管XML并不总是作为数据格式使用。 通过AjaxWeb应用程序可以在不重新加载整个页面的情况下更新页面的部分内容。这样可以实现更加交互和响应式的用户体验。 Ajax使用JavaScript发送请求到服务器并异步处理响应而不会阻塞用户界面。 可以通过 JavaScript 和XNLHttpRequest对象来向服务器请求数据 Ajax可以用于执行各种任务例如从服务器检索数据、提交表单数据和动态更新内容。 它通常用于现代Web应用程序中用于创建自动完成搜索框、实时更新和无限滚动等交互功能。 优点 提高用户体验通过减少页面重载和刷新使得网站变得更加灵活和动态减轻服务器负载可以有效减少服务器接收到的请求次数和需要响应的数据量从而减轻服务器负担提高响应速度可以异步获取数据并更新页面从而提高响应速度增加交互使页面变得可交互性 缺点 对搜索引擎优化SEO不友好爬虫无法抓取Ajax中的内容与URL 考虑用SSR服务端渲染技术需要考虑安全性问题数据和网络安全需要采取对应的措施 二、使用步骤 XNLHttpRequest对象 创建对象xhr const xhr new XMLHttpRequest()open方法接收三个参数分别是 请求方式、请求地址、是否异步默认为true xhr.open(post,http://localhost:3000/api/post,true)setRequestHeader方法:用于为请求的HTTP头设置值。 setRequestHeader(header, value)onreadystatechange方法监听服务端返回的数据 xhr.onreadystatechange () {console.log(xhr)if (xhr.readyState 4 xhr.status 200) {console.log(xhr.responseText)}}readyState属性 0未初始化XNLHttpRequest已经创建但未调用open方法1已打开open方法已调用send方法未调用2已发送send方法已调用服务端接收到请求3正在接收服务器正在处理请求并返回数据4完成服务端已完成数据传输 status属性: 200成功 400参数错误 403没有权限 401token找不到 404未找到 500服务器错误send方法给服务端发送的数据 xhr.send(JSON.stringify({name:smz}))abort方法:用于停止或放弃当前异步请求。必须在open方法后,无法恢复。 stop.addEventListener(click,(){xhr.abort()})getResponseHeader方法:用于以字符串形式返回指定的HTTP头信息。 getResponseHeader(headerLabel)getAllResponseHeaders方法:用于以字符串形式返回完整的HTTP头信息。 getAllResponseHeaders()监听进度 给xhr对象添加一个progress事件返回event event.loaded当前进度 event.total总进度 xhr.addEventListener(progress,(event){console.log(event.loaded,event.total)})设置超时xhr.timeout 3000 超时回调监听timeout事件 xhr.addEventListener(timeout,(){alert(请求超时)})中断回调监听abort事件 xhr.addEventListener(abort,(){console.log(请求中断)})监听load事件也可以监听请求是否成功就不用判断readyState的值 xhr.addEventListener(load,(){if (xhr.status 200){console.log(请求成功触发onload)}})post请求请求参数要放在send()中 完整代码 前端代码 !DOCTYPE html html langen headmeta charsetUTF-8titleTitle/title /head body divbutton idsend发送请求/buttonbutton idstop中断请求/buttondiv进度条span idprogress/span/divinput idfile typefile /div /body scriptlet btn document.getElementById(send)let file document.getElementById(file)btn.addEventListener(click,(){sendAjax()})//上传文件file.addEventListener(change,(){const formData new FormData()formData.append(file,file.files[0]) // key值对应后端 upload.single(file)const xhr new XMLHttpRequest()xhr.open(post,http://localhost:3000/api/upload,true)xhr.onreadystatechange () {console.log(xhr)if (xhr.readyState 4 xhr.status 200) {console.log(xhr.responseText)}}xhr.send(formData)})const sendAjax () {const xhr new XMLHttpRequest()// 三个参数请求方式、请求地址、是否异步默认为true//get// xhr.open(get,http://localhost:3000/api/txt?namesmz,true)//postxhr.open(post,http://localhost:3000/api/post,true)//设置请求头xhr.setRequestHeader(Content-Type,application/json)//设置超时xhr.timeout 30000//超时回调xhr.addEventListener(timeout,(){alert(请求超时)})// 监听服务端返回的数据xhr.onreadystatechange () {if (xhr.readyState 4 xhr.status 200) {console.log(xhr.responseText)}}//监听进度xhr.addEventListener(progress,(event){const progress document.getElementById(progress)progress.innerText ${(event.loaded/event.total*100).toFixed(2)}%console.log(event.loaded,event.total)//响应头console.log(xhr.getAllResponseHeaders())console.log(xhr.getResponseHeader(content-type))})//中断请求let stop document.getElementById(stop)stop.addEventListener(click,(){xhr.abort()})//监听中断xhr.addEventListener(abort,(){console.log(请求中断)})//监听请求成功xhr.addEventListener(load,(){if (xhr.status 200){console.log(请求成功触发onload)}})// 给服务端发送的数据// xhr.send(null)//postxhr.send(JSON.stringify({name:smz}))}/script /html后端代码这里用的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 // 函数名let text for(let i0;i10000;i){text ${name}Ajax}res.send( text) })app.use(express.json()) app.use(express.urlencoded({extended:true})) // post请求 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}}) }) // 预检请求放行 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) })总结 axios第三方库对Ajax做了一些封装本文主要记录了Ajax的介绍与使用。
http://www.hkea.cn/news/14374319/

相关文章:

  • 上海网站建设框架图做网站的目的是什么
  • 为什么要建设网站手机智能建网站
  • wordpress怎么安装到服务器网站优化排名优化
  • 柳州做网站那家好无锡网站建设价格费用
  • 做播放器电影网站需要多少钱6sina app engine wordpress
  • 郑州网站建设喝彩宝塔有WordPress
  • asp网站制作成品作业wordpress商城模板添加产品
  • 搭建一个视频网站合肥软件外包公司
  • 秦皇岛做网站优化价格网站推广成本
  • 企业网站管理系统站长之家赣榆县建设局网站
  • 阿里云 拦截网站网站建设用模板好吗
  • 能赚钱的网站做网站的盈利点
  • 七台河网站seo天津平台网站建设企业
  • 深圳做微信网站建设wordpress动画
  • 泉州市培训建设系统中心网站小型企业互联网解决方案
  • 网站开发要多钱浙江龙元建设集团 网站
  • shopify建站如果熊掌号做的不好会不会影响网站
  • 自己建设企业网站整合营销包括哪三方面
  • 赤水市建设局官方网站房子装修风格大全2021新款
  • 网站建设设计服务工程承包app
  • 编写网站 语言wordpress后台左上角
  • 网站建设合同属于购销吗3c渠道网
  • 免费网站源码htmlwordpress最简易主题
  • 网站开发 ppt一级造价工程师报名网站
  • 有网站吗免费的页面设计中为什么要有优先级排列
  • 网站建设地址 北京小型网站商城建设
  • nginx网站301重定向怎么做wordpress主题 简约
  • 常州网站备案网站开发语言在那看出来
  • 知名企业网站例子大连意动网站建设有限公司怎么样
  • 个人网站怎么做wap网站欣赏