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

jQuery基础——Ajax

写在前面

参考文献:莫振杰《从0到1:jQuery快速上手》

这次讲讲Ajax。

Ajax简介

Ajax,全称“Asynchronous JavaScript and XML”,也就是“异步的JavaScript和XML”。

Ajax核心是通过JS的XMLHttpRequest对象,以异步的方式向服务器发送请求数据,并且通过该对象接收请求返回的数据,从而实现客户端与服务器端的数据操作。

Ajax的优势:能够刷新指定的页面区域,而不是刷新整个页面,从而减少客户端和服务器端之间传输的数据量,提高页面速度,提高用户体验。

Ajax方法

Ajax下面有很多方法,下面展开详细说说。

load()方法

这个方法有啥用呢?

解析出Ajax请求中服务器返回的数据,然后将其插入到指定的元素中。

语法:$().load(url, data, fn)

url是Ajax请求地址,是必选参数;data表示发送到服务器的数据,是可选参数;fn表示请求完成之后的回调函数,是可选参数。

由于浏览器安全限制,大多数的Ajax请求遵循着“同源策略”,也就是说跨域请求会被拦截——Ajax请求无法从不同的域、子域或协议中获取数据。

普通情况

一般情况下,load()方法都是用于加载某一个文件的内容,例如:txt、html、php文件。

传递数据

通常情况下,我们可以使用load()方法向服务器发送数据,也就是通过data向服务器发送数据。

如果data省略,就会采用get()方式向服务器发起请求;如果data不省略,就会采用post()方法向服务器发起请求。

注意:data一般是“键值对”的格式。

get和post的区别:

一般来说,get和post都能够向服务器获取数据。

但是,post方法一般更加安全,而get方法安全性略低。

回调函数

load()方法中的第三个参数就是一个回调函数,表示请求完成之后执行的代码。

语法:

$().load(url, data, function(response, status, xhr) { ... })

response表示“请求后返回的内容”,status表示“请求状态”,xhr表示“XMLHttpRequest对象”。

特别注意

1.在load()方法中,不管Ajax请求是否成功,只要请求完成了,回调函数(fn)都会被触发。

2.load()方法一般只会用到第一个,很少会用第二、第三个。

3.load()方法一般用来向服务器请求静态的数据文件。在实际开发中,如果需要传递参数给服务器,应该使用$.get()方法、$.post()方法、$.ajax()方法。

$.get()方法

作用:向服务器发送请求获取数据。

语法:$.get(url, data, fn, type)

注意,这里的方法调用的对象,是jQuery,而不是通过选择器获取到的JQ对象。

url,必选参数,请求地址。

data,可选参数,请求数据。

fn,可选参数,请求成功后的回调函数。

type,可选参数,服务器返回的内容格式。

注意,这里的fn是请求成功后的回调,不是请求完成后的回调。

参数type返回的内容格式:text、html、xml、json、Script、default。

$.post()方法

上面说过,post和get方法的区别其实不大,这里再说一下区别:

get方法安全性低,不适合大数据量。

post方法则没有以上问题。

OK,下面开始介绍$.post()方法。

语法:$.post(url, data, fn, type)

参数同get()方法,这里不再重复。

$.getJSON()方法

获取服务器中JSON格式的数据。

语法:

$.getJSON(url, data, function(data) { ... })

$.getJSON()是一个全局方法,是直接定义在JQ对象下的方法。

url不作解析,重点说说data。

可以看出一共有两个data,只不过第一个data是getJSON()方法里面的一个参数,而第二个data则是回调函数里面的参数。

第一个data跟之前的是一样的,都是发送到服务器端的数据,数据也是按照键值对的形式来传递的;第二个data表示请求成功后返回的数据。

$.getScript()方法

这是一个用于动态加载JS的方法。

当网站需要加载大量的JS文件时,动态加载JS是一个比较好的优化性能手段。

语法:$.getScript(url, fn)

参数解读参考上述文案。

优势:

异步跨域加载JS文件。

需要的时候再加载,减少服务器和客户端的负担,加快页面响应。

第二个优点是不是跟页面懒加载很像?

疑问:每次执行调用JS文件的时候,是不是都回去请求一次这个JS文件?这不是压力更大吗?

其实$.getScript()方法是对Ajax()方法的一个封装,可以使用Ajax()方法的缓存来将http装填从200改为304,从而使用客户端的缓存。

$.ajaxSetup({

        cache: true

})

这个ajax()方法是啥?

$.ajax()方法

其实上面介绍的五种方法都是纠结$.ajax()方法实现的,只不过这些方法性能更好而已(因为ajax()方法封装了很多功能)。

语法:$.ajax(options)

这里的options在之前说过了,有人想起来吗?

这个options其实就是一个对象,内部采用键值对的形式传值。

常用的参数:

url请求地址
type数据请求方式,get/post,默认是get
data发送到服务器的数据,可以是字符串或对象
dataType服务器返回的数据类型,如:text、html、script等
beforeSend发送请求前可以修改XMLHttpRequest对象的函数
complete请求完成的回调函数
success请求成功的回调函数
error请求失败的回调函数
timeout请求超时时间,单位是毫秒
global是否响应全局事件,默认true
async是否为异步请求,默认true
cache是否进行页面缓存,true表示缓存,false表示不缓存

使用$.ajax()代替$.getJSON():

$.ajax({

        url: "getJSON()中的URL",

        type: "get",

        dataType: "json",

        success: function(data) { ... }

})

是不是很麻烦?

所以说,术业有专攻。

写在最后

短短两千字,是无法表达出ajax的魅力的,如果需要深究,建议多去看书籍。

一些基础的知识也没有提到,没有什么基础学起来是比较费劲的。


http://www.mrgr.cn/news/18442.html

相关文章:

  • Windows 安装 MySQL8
  • 数据结构:(LeetCode144)二叉树的前序遍历
  • 希尔排序
  • Scrcpy简介
  • 粒子群算法电力系统【原创附代码】
  • 法人手机验证通常是为了确保企业相关操作的安全性和合法性。以下是一些常见的法人手机验证方法及测试要点:
  • 用RPC Performance Inspector 优化你的区块链
  • SpringCloud开发实战(一):搭建SpringCloud框架
  • java update有什么用
  • 高教社杯数模竞赛特辑论文篇-2016年A题:系泊系统设计(续)(附MATLAB代码实现)
  • htop的使用详解
  • 软件工程-图书管理系统的需求分析
  • 《比较教育学报》
  • 基于nodejs+vue+uniapp的学习资料销售平台小程序
  • 分类预测|基于鲸鱼优化WOA最小二乘支持向量机LSSVM的数据分类预测Matlab程序WOA-LSSVM 多特征输入多类别输出
  • 集成电路学习:什么是I/O输入输出
  • Linux C 内核编程 /proc 编程例子
  • 分体设计不入耳,舒适佩戴的AI耳机,塞那G6S体验
  • 备忘录1【java环境变量手动更改】
  • WordPress 集网址、资源、资讯于一体的导航类主题开心版