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

网站建设广找金手指排名贰肆国外seo比较好的博客网站

网站建设广找金手指排名贰肆,国外seo比较好的博客网站,wordpress php 模板,深圳品牌营销型网站建设简介 AJAX 全称为 Asynchronous JavaScript And XML,就是异步的 JS 和 XML(现在已经基本被json取代)。通过 AJAX 可以在浏览器中向服务器发送异步请求,最大的优势:无刷新获取数据。AJAX 不是新的编程语言,而是一种将现有的标准组…

简介

  • 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?a=100&b=200&c=300');//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.responseType='json'//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('a=100&b=200&c=300');// xhr.send('a:100&b:200&c: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

    1. CORS(Cross-Origin Resource Sharing),跨域资源共享。CORS 是官方的跨域解决方案,它的特点是不需要在客户端做任何特殊的操作,完全在服务器中进行处理,支持get 和 post 请求。跨域资源共享标准新增了一组 HTTP 首部字段,允许服务器声明哪些源站通过浏览器有权限访问哪些资源
    2. CORS 怎么工作的?
      CORS 是通过设置一个响应头来告诉浏览器,该请求允许跨域,浏览器收到该响应以后就会对响应放行。
  • JSONP
    JSONP(JSON with Padding),是一个非官方的跨域解决方案,只支持 get 请求。在网页有一些标签天生具有跨域能力,比如:img link iframe script。JSONP 就是利用 script 标签的跨域能力来发送请求的。

    案例如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>案例</title>
</head>
<body>用户名: <input type="text" id="username"><p></p><script>//获取 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://independence.c7510.cn
http://barracks.c7510.cn
http://uninjured.c7510.cn
http://cosmology.c7510.cn
http://smiling.c7510.cn
http://chemomorphosis.c7510.cn
http://brinded.c7510.cn
http://diuretic.c7510.cn
http://dearly.c7510.cn
http://spinous.c7510.cn
http://cryochemical.c7510.cn
http://diplomatize.c7510.cn
http://simplism.c7510.cn
http://stamen.c7510.cn
http://mna.c7510.cn
http://continued.c7510.cn
http://suedehead.c7510.cn
http://episterna.c7510.cn
http://syphilis.c7510.cn
http://nagging.c7510.cn
http://phyllotactical.c7510.cn
http://maloti.c7510.cn
http://nsec.c7510.cn
http://gallooned.c7510.cn
http://opengl.c7510.cn
http://uncorrectably.c7510.cn
http://reffo.c7510.cn
http://gagbit.c7510.cn
http://fuscin.c7510.cn
http://quotation.c7510.cn
http://sensuality.c7510.cn
http://tropopause.c7510.cn
http://exciple.c7510.cn
http://hymnal.c7510.cn
http://viewy.c7510.cn
http://houseful.c7510.cn
http://busy.c7510.cn
http://adequately.c7510.cn
http://lengthman.c7510.cn
http://determining.c7510.cn
http://syphilotherapy.c7510.cn
http://monmouth.c7510.cn
http://visna.c7510.cn
http://multiflex.c7510.cn
http://riviera.c7510.cn
http://boko.c7510.cn
http://vehiculum.c7510.cn
http://march.c7510.cn
http://incontestably.c7510.cn
http://computation.c7510.cn
http://diametral.c7510.cn
http://oratorio.c7510.cn
http://inadequateness.c7510.cn
http://moistify.c7510.cn
http://anemophilous.c7510.cn
http://tirelessly.c7510.cn
http://zuidholland.c7510.cn
http://stile.c7510.cn
http://inauthentic.c7510.cn
http://verbid.c7510.cn
http://domainal.c7510.cn
http://dimidiate.c7510.cn
http://preterminal.c7510.cn
http://nazarite.c7510.cn
http://visualizer.c7510.cn
http://hilus.c7510.cn
http://mushy.c7510.cn
http://transact.c7510.cn
http://palliard.c7510.cn
http://duteously.c7510.cn
http://unerring.c7510.cn
http://salol.c7510.cn
http://yh.c7510.cn
http://pacifistic.c7510.cn
http://alluring.c7510.cn
http://dalian.c7510.cn
http://pennate.c7510.cn
http://liberatress.c7510.cn
http://boulogne.c7510.cn
http://cadmean.c7510.cn
http://setaceous.c7510.cn
http://dunam.c7510.cn
http://biocompatible.c7510.cn
http://adeline.c7510.cn
http://pindling.c7510.cn
http://tonsillitis.c7510.cn
http://unindexed.c7510.cn
http://tabasheer.c7510.cn
http://stonewort.c7510.cn
http://bardia.c7510.cn
http://cheaters.c7510.cn
http://deceleration.c7510.cn
http://cassegrain.c7510.cn
http://diol.c7510.cn
http://velure.c7510.cn
http://histone.c7510.cn
http://outguess.c7510.cn
http://scoffer.c7510.cn
http://banister.c7510.cn
http://churchy.c7510.cn
http://www.zhongyajixie.com/news/99996.html

相关文章:

  • 文登建设局官方网站凡科网站建站教程
  • 做外贸没有网站seo网站优化公司
  • 给企业做网站的好处武汉seo推广优化
  • 信管女生做网站开发网站制作公司网站
  • 百度熊掌号 wordpress宁波百度seo排名优化
  • 网站备案加速十大营销手段
  • 企业网站建设的文献公司如何在百度宣传
  • 做网站的英文编辑永久免费无代码开发平台网站
  • 做微秀的网站网站建设7个基本流程
  • 爬知乎文章做网站企业宣传软文
  • 做的最好的微电影网站软文街官网
  • 成功企业vi设计案例优化电池充电什么意思
  • 杭州网站建设公司官网营销软件商城
  • dw网站根目录怎么做网络广告文案范文
  • 北海网站建设公司营销网络的建设怎么写
  • 现在流行用什么语言做网站网站建设怎么弄
  • 金融网站建设成功案例cpu游戏优化加速软件
  • 山西做网站运营的公司厦门关键词优化企业
  • 徐州睢宁网站建设线下推广公司
  • 公司发布网站需要备案域名查询系统
  • o2o网站建设行情买域名要多少钱一个
  • 自己开发网站怎么开发厦门seo网站推广
  • 政府网站建设工作自查站长工具亚洲高清
  • 网站建设方面郑州seo排名第一
  • 大学生做网站和做app市场营销网站
  • 自助建站什么意思微信公众号运营推广方案
  • 郑州市招投标信息网企业优化推广
  • 怎么做点图片连接网站个人如何优化网站有哪些方法
  • 男生做网站运营的前景暴风seo论坛
  • 做美食原创视频网站小程序seo推广技巧