1.介绍

2.基本用法

2.1原生写法

        $.ajax({
url: url,
//是否是异步请求,默认是
// async: false,
//请求方式,默认是get
//type:'get',
//数据请求的类型,默认是application/x-www-form-urlencoded,如果设置为application/json; charset=utf-8,则需要把参数转为json字符串
// contentType: "application/json; charset=utf-8",
//传递的参数
data: {},
//成功的回调
success(data) {
console.log(data)
},
//失败的回调
error() {
console.log("请求数据失败")
}
})

1)get请求测试

    $.ajax({
url: "https://autumnfish.cn/api/joke/list",
data: {
num: 5
},
//成功的回调
success(data) {
console.log(data)
},
//失败的回调
error() {
console.log("请求数据失败")
}
})

2)post请求测试

     $.ajax({
url: "https://autumnfish.cn/api/user/reg",
type:'post',
contentType: "application/json; charset=utf-8",
data:JSON.stringify({
username:123456
}),
//成功的回调
success(data) {
console.log(data)
},
//失败的回调
error() {
console.log("请求数据失败")
}
})

这里指定了请求的数据类型,然后把请求的参数转为json字符串,后台需要使用@RequestBody接收。

2.2get的简写方式

$.get("https://autumnfish.cn/api/joke/list",{num: 5},function(data){
console.log(data)
})

2.3post的简写方式

$.post("http://localhost:8001/test",{username: 123456},function(data){
console.log(data)
})

这种方式,传递给后台后,必须使用String username来接收,如果要用@RequestBody接收,那就只能使用$.ajax。具体参考下面的说明。

3.post请求前后台传值/接收问题

3.1默认方式

默认情况下,contentType值是"application/x-www-form-urlencoded"

$.ajax({
url: "http://localhost:8001/test1",
type: 'post',
data: {
name:'张三',
age:20
},
//成功的回调
success(data) {
console.log(data)
},
//失败的回调
error() {
console.log("请求数据失败")
}
})

传递参数后,后台直接根据参数进行接收即可,在参数前面加@RequestParam也可以。

 @PostMapping("/test1")
public void test(String name,Integer age){
System.out.println(name+","+age);
}

3.2修改contentType

如果后台需要通过@RequestBody接收,那么使用默认的方式是不行的,需要修改contentType的值是"application/json; charset=utf-8",另外在传递时参数要转为json字符串。

 $.ajax({
url: "http://localhost:8001/test2",
type: 'post',
contentType: "application/json; charset=utf-8",
data: JSON.stringify({
name:'张三',
age:20
}),
//成功的回调
success(data) {
console.log(data)
},
//失败的回调
error() {
console.log("请求数据失败")
}
})

后台接收

 @PostMapping("/test2")
public void test2(@RequestBody User user){
System.out.println(user);
}

4.封装ajax

对于传递json字符串类型的,每次传递的非常麻烦,可以对这些方法进一步封装,文件名是request.js,内容如下:

//对ajax的封装

//get请求
function get(url, data, callback, async = true) {
$.ajax({
url,
async,
type: 'get',
data,
//成功的回调
success(res) {
callback(res)
},
//失败的回调
error() {
console.log("发送请求时出现错误!")
}
})
}
//post请求,默认方法
function post(url, data, callback, async = true) {
$.ajax({
url,
async,
type: 'post',
data,
//成功的回调
success(res) {
callback(res)
},
//失败的回调
error() {
console.log("发送请求时出现错误!")
}
})
}
//post请求,传递json字符串,后台使用@RequestBody接收
function postJson(url, data, callback, async = true) {
$.ajax({
url,
async,
type: 'post',
contentType: "application/json; charset=utf-8",
data: JSON.stringify(data),
//成功的回调
success(res) {
callback(res)
},
//失败的回调
error() {
console.log("发送请求时出现错误!")
}
})
}

在html中引入并使用。注意,必须先引入jquery,再引入request

<script src="jquery.min.js"></script>
<script src="reuqest.js"></script> <script>
get("https://autumnfish.cn/api/joke/list",{num: 5},function(data){
console.log(data)
}) postJson("https://autumnfish.cn/api/user/reg",{username: 123456},function(data){
console.log(data)
})
</script>

封装后,直接引入,然后调用对应的方法,是不是简洁很多了呢?

Ajax的基本用法的更多相关文章

  1. [转载]Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结

    本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数: ...

  2. Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结

    本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数:  ...

  3. 转载 : Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结

    Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结 投稿:jingxian 字体:[增加 减小] 类型:转载 时间:2013-11-14我要评论 本文是 ...

  4. 最简单ajax,$.post()用法

    最简单的ajax,$.post()用法 $.post("action.php",{'email':$('#email').val(),'address':$('#address') ...

  5. ASP.NET MVC Ajax.ActionLink 简单用法

    ASP.NET MVC 项目中,如何使用类似于 iframe 的效果呢?或者说 Ajax 局部刷新,比如下面操作: 我们想要的效果是,点击 About 链接,页面不刷新(地址栏不变),然后下面的内容进 ...

  6. (转)Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结

    详细解读Jquery各Ajax函数: $.get(),$.post(),$.ajax(),$.getJSON() 一,$.get(url,[data],[callback]) 说明:url为请求地址, ...

  7. $.ajax等相关用法

    下面是jquery一些方法的相关用法: $.ajax: $.ajax({ type: "GET", url: "url", data: {username:$( ...

  8. 浅谈AJAX的基本原理和原生AJAX的基础用法

    一.什么是AJAX? AJAX,即"Asynchronous Javascript And XML",翻译为异步的JavaScript和XML,是一种创建交互式网页应用的网页开发技 ...

  9. Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结【转载】

    详细解读Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON() 一,$.get(url,[data],[callback]) 说明:url为请求地址,d ...

  10. Ajax + PHP 的用法以及遇见的问题

    由于自己是个php小白,所以新知识点都要自己去不断的试验和摸索. 分享下自己用php + ajax交互的用法和问题. 前端代码: $.ajax({ type: "POST", da ...

随机推荐

  1. HDU-6881 Tree Cutting (HDU多校D10T5 点分治)

    HDU-6881 Tree Cutting 题意 \(n\) 个点的一棵树,要求删除尽量少的点,使得删点之后还是一棵树,并且直径不超过 \(k\),求删除点的数量 分析 补题之前的一些错误想法: 尝试 ...

  2. Educational Codeforces Round 67 E.Tree Painting (树形dp)

    题目链接 题意:给你一棵无根树,每次你可以选择一个点从白点变成黑点(除第一个点外别的点都要和黑点相邻),变成黑点后可以获得一个权值(白点组成连通块的大小) 问怎么使权值最大 思路:首先,一但根确定了, ...

  3. Educational Codeforces Round 88 (Rated for Div. 2) D、Yet Another Yet Another Task

    题意: 给你一个含n个数a1,a2...an的数组,你要找到一个区间[l,r],使得al+a(l+1)+...+a(r-1)+ar减去max(al,a(l+1),...,a(r-1),ar)的值尽可能 ...

  4. hoj2430 Counting the algorithms

    My Tags   (Edit)   Source : mostleg   Time limit : 1 sec   Memory limit : 64 M Submitted : 725, Acce ...

  5. C++快读

    写在前面: 一个小专题 完全非原创,不知道原来是谁提出的 诈尸 http://thepingaslord.deviantart.com/art/The-Evening-Prior-312446336 ...

  6. typedef struct xxx xxx与struct xxx区别 && “->”和“.”访问结构体变量

    1. struct //是C中的结构体的关键词.如: stuct node{ int a;.....} a; node 相当于结构体的类型,关键是其实在C中stuct node 才相当于一个数据类型, ...

  7. wordpress 主题安装 您点击的链接已过期 nginx 出现413 Request Entity Too Large

    1 nginx 出现413 Request Entity Too Large 问题是限制上传大小,解决: 1.打开nginx配置文件 nginx.conf, 路径一般是:/etc/nginx/ngin ...

  8. codeforces 875B

    B. Sorting the Coins time limit per test 1 second memory limit per test 512 megabytes input standard ...

  9. AbstractQueuedSynchronizer的使用和juc里的相关类的解析

    对AQS进行解析后,先来实现两个简单的基于AQS的类,然后再解析juc里基于AQS构造的类. 1.基于AQS的类的示例 首先先看这个类,这个类是<Java并发编程实战>的一个示例,AQS源 ...

  10. 云原生系列2 部署你的第一个k8s应用

    云原生的概念和理论体系非常的完备,but talk is cheap , show me the code ! 但是作为一名程序员,能动手的咱绝对不多BB,虽然talk并不cheap , 能跟不同层次 ...