jQuery 常用的请求 get 请求、 post 请求、 ajax 请求
jQuery 发送 get 请求
jQuery 提供了一个函数, 叫做 $.get()
引入 jQuery 以后, 回提供两个变量
1. $
2. jQuery
这两个都是函数数据类型
函数当作一个对象, 身上添加了一些成员
我们管这种方法叫做 jQuery 的全局方法
不需要依赖选择器, 不需要元素集合
直接调用就行
专门用来发送 get 请求
使用方法: $.get(地址, 传递给后端的数据, 回调函数, 期望返回的数据类型)
地址: 请求地址 (你可以自主拼接参数, 不推荐)
数据: 给后端的数据, 可以写 'key=value&key=value', 可以写 { ... }
回调: 请求成功的回调, 请求成功以后会触发
期望返回的数据类型: 是不是执行解析响应体的操作
'string' 不解析
'json' 会执行一步 JSON.parse()
$.get('./server/get.php?a=100&b=200', function (res) {// res 就是后端返回的响应体// 如果你的最后一个参数写了 'json', 会自动执行 JSON.parse() console.log(res) }, 'json') $.get('./server/get.php', 'c=300&d=400', function (res) {// res 就是后端返回的响应体// 如果你的最后一个参数写了 'json', 会自动执行 JSON.parse() console.log(res) }, 'json') $.get('./server/get.php', { e: 500, f: 600 }, function (res) {// res 就是后端返回的响应体// 如果你的最后一个参数写了 'json', 会自动执行 JSON.parse() console.log(res) }, 'json')
复制代码
get.php
<?php$arr = array( "message" => "接收 get 请求成功, 参数原样带回", "data" => $_GET );// 以 json 形式返回结果 echo json_encode($arr);?>
复制代码
jQuery 发送一个 post 请求
jQuery 提供了一个全局方法叫做 $.post()
专门用来发送 post 请求
发送 post 请求
使用方法: $.post(地址, 携带给后端的数据, 回调函数, 期望后端返回的数据类型)
四个参数的意义和 $.get() 一模一样
$.post('./server/post.php', 'a=1000&b=2000', (res) => { console.log(res) }, 'json') $.post('./server/post.php', { c: 3000, d: 4000 }, (res) => { console.log(res) }, 'json')
复制代码
post.php
<?php $arr = array( "message" => "接收 post 请求成功, 参数原样带回", "data" => $_POST ); // 以 json 形式返回结果 echo json_encode($arr);?>
复制代码
jQuery ajax 请求的综合方法
可以自由来配置, 决定发送 get 还是 post 请求
叫做 $.ajax(),所有的请求都可以使用他来发送
使用方法: $.ajax(options)
options: 就是本次请求的配置信息, 是一个对象数据类型
配置信息里面可以填写的内容
1. url: 请求地址, 必填
2. async: 是否异步, 默认是异步(true), 可以选填非异步(false)
3. type / method: 表示请求方式, 默认是 GET, 可以选填其他请求方式,可以忽略大小写
4. data: 传递给后端的参数
可以是查询字符串的形式或是对象的形式
5. dataType: 期望后端返回的数据类型, 是否进行 JSON.parse() 解析
6. success: 接收一个函数数据类型, 表示成功的回调
7. error: 接收一个函数数据类型, 表示失败的回调
不只是请求失败会走失败的回调
当解析失败的时候, 会走失败的回调
8. timeout: 设置一个超时时间
从发送请求开始计时, 到达超时时间还没有接收到响应
会直接取消本次请求, 到失败的回调函数
9. cache: 是否缓存
对于 ajax 请求默认缓存的(true), 可以选填(false)
选择缓存, 那么不会有最后一个时间戳参数
选择不缓存, 那么 jQuery 会在本次请求的末尾添加一个时间戳作为参数
jsonp 请求默认不缓存(false), 可以选填(true)
发送 jsonp 请求的时候, 会默认带有一个时间戳参数
10. context: 上下文
指定回调函数的 this 指向
jQuery 默认回调函数的 this 指向 jQuery 封装的 xhr 对象
context 传递的是谁, 回调函数的 this 就指向谁
const obj = { name: '我是 obj 对象' }// 发送请求的时候 $.ajax({ url: './server/get.php', method: 'GET', // 本次请求以 POST 方式请求 async: true, data: { a:100, b:200 }, dataType: 'json', // 对响应体执行 JSON.parse() 操作 success (res) { // res 就是响应体, 会根据 dataType 填写的内容来解析 console.log(res) console.log(this) }, error (xhr, info, err) { // xhr 是 jQuery 封装的 ajax 对象 // info 是本次失败的错误信息 console.log('本次请求失败了') console.log(xhr) console.log(info) console.log(err) }, // timeout: 1000, // 1s 没有接收到响应就会取消本次请求 // cache: false, context: obj })
复制代码
jQuery 发送 ajax 请求
jQuery 对于 ajax 的封装
除了回调函数的形式接收结果
还封装了 promise 的形式接收结果
$.ajax() 方法
选择书写回调函数的形式或者选择 promise 的形式
注意: ,在两种方式中选择一种使用
$.ajax({ url: './server/post.php', data: { a: 100, b: 200 }, type: 'POST', dataType: 'json', success (res) { console.log(res) } }) // 直接以 promise 的形式接收响应 $.ajax({ url: './server/post.php', data: { a: 100, b: 200 }, type: 'POST', dataType: 'json' }).then(res => { console.log(res) }) // 直接以 promise 的形式接收响应 $.ajax({ url: './server/post.php', data: { a: 100, b: 200 }, type: 'POST', dataType: 'json' }).then(res => { console.log(res) })
复制代码
评论