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

建设网站时的常见故障分类代理浏览器

建设网站时的常见故障分类,代理浏览器,app管理系统,一台网站服务器多少钱简介 AJAX 全称为 Asynchronous JavaScript And XML#xff0c;就是异步的 JS 和 XML(现在已经基本被json取代)。通过 AJAX 可以在浏览器中向服务器发送异步请求#xff0c;最大的优势#xff1a;无刷新获取数据。AJAX 不是新的编程语言#xff0c;而是一种将现有的标准组…简介 AJAX 全称为 Asynchronous JavaScript And XML就是异步的 JS 和 XML(现在已经基本被json取代)。通过 AJAX 可以在浏览器中向服务器发送异步请求最大的优势无刷新获取数据。AJAX 不是新的编程语言而是一种将现有的标准组合在一起使用的新方式。 优点 无需刷新页面即可与服务器进行通信。允许根据用户事件来更新部分页面内容。 缺点 没有浏览历史不能回退存在跨域问题ajax默认是遵循同源策略跨域请求是无法通过ajax请求的seo不友好无法通过爬虫获取到ajax请求的数据也无法在浏览器的源代码选项中获取到相关的源码 总而言之ajax不是什么新鲜的对象我们把它当作是在一个已有的网页中我们可以通过它请求后端的数据来显示在之前的网页中。 AJAX的使用 GET请求 btn.onclick function(){//1. 创建对象const xhr new XMLHttpRequest();//浏览器开发者选项中的xhr里面的信息就是该页面的ajax请求//2. 初始化 设置请求方法和 urlxhr.open(GET, http://127.0.0.1:8000/server?a100b200c300);//3. 发送xhr.send();//4. 事件绑定 处理服务端返回的结果xhr.onreadystatechange function(){//判断 (服务端返回了所有的结果)if(xhr.readyState 4){// 2xx 成功if(xhr.status 200 xhr.status 300){//响应 // console.log(xhr.status);//状态码// console.log(xhr.statusText);//状态字符串// console.log(xhr.getAllResponseHeaders());//所有响应头// console.log(xhr.response);//响应体//设置 result 的文本result.innerHTML xhr.response;}else{}}}}POST请求 result.addEventListener(mouseover, function(){//1. 创建对象const xhr new XMLHttpRequest();xhr.responseTypejson//2. 初始化 设置类型与 URLxhr.open(POST, http://127.0.0.1:8000/server);//有时候ie浏览器会有缓存问题因此通常情况下最好给每个url拼接上一个时间戳参数//设置请求头xhr.setRequestHeader(Content-Type,application/x-www-form-urlencoded);xhr.setRequestHeader(name,xxx);//自定义的请求头需要在后端中设置Access-Control-Allow-Headers响应头//3. 发送xhr.send(a100b200c300);// xhr.send(a:100b:200c:300);// xhr.send(1233211234567);//4. 事件绑定xhr.onreadystatechange function(){//判断if(xhr.readyState 4){if(xhr.status 200 xhr.status 300){//处理服务端返回的结果result.innerHTML xhr.response;}}}});超时与网络异常问题 btn.addEventListener(click, function(){const xhr new XMLHttpRequest();//超时设置 2s 设置xhr.timeout 2000;//超时回调xhr.ontimeout function(){alert(网络异常, 请稍后重试!!);}//网络异常回调xhr.onerror function(){alert(你的网络似乎出了一些问题!);}xhr.open(GET,http://127.0.0.1:8000/delay);xhr.send();xhr.onreadystatechange function(){if(xhr.readyState 4){if(xhr.status 200 xhr.status 300){result.innerHTML xhr.response;}}}})重复请求问题——关键在于设置一个标志位 script//获取元素对象const btns document.querySelectorAll(button);let x null;//标识变量let isSending false; // 是否正在发送AJAX请求btns[0].onclick function(){//判断标识变量if(isSending) x.abort();// 如果正在发送, 则取消该请求, 创建一个新的请求x new XMLHttpRequest();//修改 标识变量的值isSending true;x.open(GET,http://127.0.0.1:8000/delay);x.send();x.onreadystatechange function(){if(x.readyState 4){//修改标识变量isSending false;}}}// abortbtns[1].onclick function(){x.abort();}/script使用express框架搭建一个后端 //1. 引入express const express require(express);//2. 创建应用对象 const app express();//3. 创建路由规则 // request 是对请求报文的封装 // response 是对响应报文的封装 //all方法表示所有类型的请求都可以get、post、delete。。。 app.all(/server, (request, response){//设置响应//response.set(Access-Control-Allow-Origin,http://127.0.0.1:3000);//只对http://127.0.0.1:3000这个url的请求允许跨域response.setHeader(Access-Control-Allow-Origin,*)//对所有请求允许跨域response.setHeader(Access-Control-Allow-Headers,*)//允许各种请求头包括自定义的和http已经定义的请求头response.send(HELLO EXPRESS); });//4. 监听端口启动服务 app.listen(8000, (){console.log(服务已经启动, 8000 端口监听中....); });AJAX的请求状态 xhr.readyState 可以用来查看请求当前的状态 0: 表示 XMLHttpRequest 实例已经生成但是 open()方法还没有被调用。1: 表示 send()方法还没有被调用仍然可以使用 setRequestHeader()设定 HTTP请求的头信息。2: 表示send()方法已经执行并且头信息和状态码已经收到。3: 表示正在接收服务器传来的body部分的数据。4: 表示服务器数据已经完全接收或者本次接收已经失败了 跨域问题 同源策略 同源策略是浏览器的一种安全策略。所谓的同源是指协议、域名】端口号必须完全相同而违背同源策略就是跨域。 如果违背同源策略浏览器的开发者工具就会报如下错误该网页是从5500端口获取的但是ajax的请求却是8000端口。 解决跨域问题有两种方式 CORS CORSCross-Origin Resource Sharing跨域资源共享。CORS 是官方的跨域解决方案它的特点是不需要在客户端做任何特殊的操作完全在服务器中进行处理支持get 和 post 请求。跨域资源共享标准新增了一组 HTTP 首部字段允许服务器声明哪些源站通过浏览器有权限访问哪些资源CORS 怎么工作的 CORS 是通过设置一个响应头来告诉浏览器该请求允许跨域浏览器收到该响应以后就会对响应放行。 JSONP JSONP(JSON with Padding)是一个非官方的跨域解决方案只支持 get 请求。在网页有一些标签天生具有跨域能力比如img link iframe script。JSONP 就是利用 script 标签的跨域能力来发送请求的。 案例如下 !DOCTYPE html html langen headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0title案例/title /head body用户名: input typetext idusernamep/pscript//获取 input 元素const input document.querySelector(input);const p document.querySelector(p);//声明 handle 函数function handle(data){input.style.border solid 1px #f00;//修改 p 标签的提示文本console.log(data)p.innerHTML data.name;}//绑定事件input.onblur function(){//获取用户的输入值let username this.value;//向服务器端发送请求 检测用户名是否存在//1. 创建 script 标签const script document.createElement(script);//2. 设置标签的 src 属性script.src http://127.0.0.1:8000/server;//3. 将 script 插入到文档中document.body.appendChild(script);}/script /body /html//1. 引入express const express require(express);//2. 创建应用对象 const app express();//3. 创建路由规则 // request 是对请求报文的封装 // response 是对响应报文的封装 app.all(/server, (request, response){//设置响应// response.setHeader(Access-Control-Allow-Origin,*)// response.setHeader(Access-Control-Allow-Headers,*)const data {name: sdsdsd};response.end(handle(${JSON.stringify(data)}));//这样就会回调到html中的handle方法 });//4. 监听端口启动服务 app.listen(8000, (){console.log(服务已经启动, 8000 端口监听中....); });最后 除了前面介绍的几个字ajax的请求之外fetch函数也是可以用来进行ajax请求的 https://developer.mozilla.org/zh-CN/docs/Web/API/fetch
http://www.hkea.cn/news/14355322/

相关文章:

  • 苏州餐饮 网站建设贴吧推广
  • 做一张网站专栏背景图大连网站怎么
  • 好看的网站排版搜狗网站优化软件
  • 许昌网站建设公司排行榜网站建设情况调研报告
  • 在建设银行网站申请完信用卡吗网易企业邮箱设置
  • 中国广东网站建设html转换器
  • 阿里图标库谁做的网站小程序开发需要多少钱知乎
  • 北京城建建设工程有限公司网站建行网上银行登录入口官网
  • 昌平网站建设浩森宇特wordpress自定义页眉设置
  • 网站建设平台哪家好公司做网站怎么收费
  • 网站loading什么意思网站策划职业规划
  • 网站后台是怎么更新网页开发者工具
  • 南阳东莞网站建设公司哪家好网站开发是什么意思啊
  • 做网站一月工资陕西免费做网站公司
  • 成都建设网站多少钱石家庄网站建设培训学校
  • 电脑版4399游戏网页seo的优化方向
  • 赣州市铁路建设办公室网站wordpress 首页视频
  • wordpress怎么搭建网站小程序建站平台
  • 部门网站建设注意事项温州做网站制作哪家好
  • 做的比较好的网页设计网站电子商务专业就业方向及要求
  • 公司网站的后台高端网站建设教程
  • 公司网站开发怎么做电子商务网站建设课后题
  • 商洛做网站电话知名网站域名被抢注
  • 网站管理是做什么的seo网站优化培训找哪些
  • 营销网站建设要注意什么餐饮logo设计
  • 网站预订模板怎么做怎么评价网站的好坏
  • 中小企业网站建设中服务器的解决方案是wordpress 媒体库 删除
  • php网站中水印怎么做网站没备案可以做商城吗
  • 团购网站 方案台州企业网站
  • 安徽省住房建设厅网站我在某网站网站做代理