ajax请求过程以及请求方法的讲解(代码示例)

本篇文章给大家带来的内容是关于ajax请求过程以及请求方法的讲解(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

ajax 的全称是Asynchronous JavaScript and XML,其中,Asynchronous 是异步的意思,它有别于传统web开发中采用的同步的方式。据小编翻墙了解到,ajax很早就有了,只不过那时候都不用它,后来谷歌把它用在谷歌地图上,人们感觉使用起来很方便,而且页面不用刷新,用户体验非常好(那时候的网站也没有什么用户体验^_^)

ajax 原理

XMLHttpRequest是ajax的核心机制,它是在IE5中首先引入的,是一种支持异步请求的技术。简单的说,也就是javascript可以及时向服务器提出请求和处理响应,而不阻塞用户,达到页面无刷新的效果

var xhr = new XMLHttpRequest()//IE浏览器使用var xhr = new ActiveXObjectxhr.open('get', url, true)xhr.send(null)xhr.onreadystatechange = function () {    if (xhr.readyState == 4) {        if (xhr.status == 200) {            success(xhr.responseText)        } else {            fail && fail(xhr.status)        }    }}

登录后复制

xhr.open()

第三个参数:true/fasle 默认值为true
false就是等待有返回数据的时候再继续往下走,还没有得到数据的时候就会卡在那里,直到获取数据为止。
true就是不等待,直接返回,这就是所谓的异步获取数据!

xhr.send

需要传送的数据,接受一个字符串类型

xhr.onreadystatechange

每次状态改变所都会触发的事件处理程序

xhr.readyState有以下几种状态

0 请求未初始化,open方法尚未调用

1 服务器连接已建立,open方法已经调用,尚未调用send方法

2 请求已接收,也就是接收到头信息了

3 请求处理中,也就是接收到响应主体了,这时因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误

4 请求已完成,数据接收完毕,此时可以通过通过responseXml和responseText获取完整的回应数据

xhr.status常见HTTP状态

0**:未被始化

1**:请求收到,继续处理

2**:操作成功收到,分析、接受

3**:完成此请求必须进一步处理

4**:请求包含一个错误语法或不能完成

5**:服务器执行一个完全有效请求失败

jQuery.ajax

$.ajax({    url: '',    Type: '',    data: '',    async:true,    dataType: '',    beforeSend: function(xhr) {      xhr.setRequestHeader("Access-Toke");    },    success: function (data) {        fn1()    },    error: function (err) {       error && error(err)     }})fn2()

登录后复制

success-函数

$.ajax中的success方法是否获取成功的回调,jQuery判断了以下几种状态,在源码中有以下代码(大概位置8193行)

isSuccess = status >= 200 && status < 300 || status === 304

登录后复制

304—通常的说法就是浏览器还有缓存,服务器告诉客户,原来缓存的文档还可以继续使用

async-布尔值

async默认的设置值为true,这种情况为异步方式,就是说当ajax发送请求后,在等待server端返回的这个过程中,前台会继续 执行ajax块后面的脚本,直到server端返回正确的结果才会去执行success,也就是说这时候执行的是两个线程,ajax块发出请求后一个线程 和ajax块后面的脚本(另一个线程)

asyn设为false时,这时ajax的请求时同步的,也就是说,这个时候ajax块发出请求后,他会等待在fn1()这个地方,不会去执行fn2(),知道fn1()部分执行完毕。

dataType–字符串

dataType可以指定以下值

xml:返回XML文档,可用JQuery处理

html:返回纯文本HTML信息;包含的script标签会在插入DOM时执行

script:返回纯文本JavaScript代码。不会自动缓存结果。除非设置了cache参数。注意在远程请求时(不在同一个域下),所有post请求都将转为get请求

json:返回JSON数据

jsonp:JSONP格式。使用SONP形式调用函数时,例如myurl?callback=?,JQuery将自动替换后一个“?”为正确的函数名,以执行回调函数

text:返回纯文本字符串

beforeSend–函数

送请求前可以修改XMLHttpRequest对象的函数,例如添加自定义HTTP头。在beforeSend中如果返回false可以取消本次ajax请求。XMLHttpRequest对象是惟一的参数

ajax优缺点

优点 : 通过异步,提升用户的体验,减少不必要的数据往返,实现局部刷新

缺点 : 对搜索引擎支持比较弱

以上就是ajax请求过程以及请求方法的讲解(代码示例)的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2737038.html

(0)
上一篇 2025年3月8日 01:31:45
下一篇 2025年2月22日 15:52:12

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 使用vue实现的扫雷游戏(附代码)

    本篇文章给大家带来的内容是关于使用vue实现的扫雷游戏(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 上班闲来没事做,,心血来潮。想用刚学的vue,写一个扫雷游戏。。好了,直入正题. 第一步,先制作一个10&#2…

    2025年3月8日
    200
  • 微信jssdk逻辑在vue中的使用方法介绍(代码示例)

    本篇文章给大家带来的内容是关于微信jssdk逻辑在vue中的使用方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 微信 jssdk 在 vue 中的简单使用 import wx from ‘weixin-…

    编程技术 2025年3月8日
    200
  • ES6中箭头函数的解析(附示例)

    本篇文章给大家带来的内容是关于es6中箭头函数的解析(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 概述 箭头函数有两个作用: 更简短的写法 不绑定this 语法一表览 ()=>{}()=>{cons…

    2025年3月8日
    200
  • ES6中var、let、const、块级作用域以及暂存死区的介绍

    本篇文章给大家带来的内容是关于es6中var、let、const、块级作用域以及暂存死区的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 var 语法 var varname1 [= value1 [, varname…

    编程技术 2025年3月8日
    200
  • ES6中默认参数的介绍(代码示例)

    本篇文章给大家带来的内容是关于es6中默认参数的介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 语法 function [name]([param1[ = defaultValue1 ][, …, pa…

    编程技术 2025年3月8日
    200
  • ES6中剩余参数的示例讲解

    本篇文章给大家带来的内容是关于es6中剩余参数的代码讲解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 概述 剩余参数将没有对应形参的参数聚合成一个数组 语法 function(a, b, …theArgs) {} 登…

    编程技术 2025年3月8日
    200
  • ES6中展开符号的介绍

    本篇文章给大家带来的内容是关于es6中展开符号的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 概述 展开符号真的是一个非常好用的东西,我常用于字符串分割、数组合并、数组拷贝、对象合并、对象拷贝。 0x001 语法 .…

    编程技术 2025年3月8日
    200
  • ES6中解构赋值的使用讲解

    本篇文章给大家带来的内容是关于es6中解构赋值的使用讲解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 概述 实不相瞒,解构赋值非常叼,特别是和其他es6一起使用的时候,那如何简单的说解构赋值呢,打个比方:解构赋值就是一个…

    编程技术 2025年3月8日
    200
  • ES6中模板字符串用法介绍(附示例)

    本篇文章给大家带来的内容是关于es6中模板字符串用法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 概述 模板字符串出来以后,单引号、双引号哪个好的争论可以退出历史舞台的,模板字符串的`最好! 语法 单行文本 `str…

    编程技术 2025年3月8日
    200
  • ES6中增强的对象字面量的简单介绍

    本篇文章给大家带来的内容是关于es6中增强的对象字面量的简单介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 概述 在es6中,对象字面量的语法被增强了 更短的属性声明 如果属性的属性名和属性值引用的变量名一致,可以直接…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论