1. AJAX
1.基础内容
实现功能:
在不转发和重发的情况下处理页面(异步)
基础配置:
- 配置tomcat
- 设置spring-mvc依赖
- 字符集.自动查找
2.$.ajax参数
参数名 | 内容 | 注意事项 |
---|---|---|
url | 访问地址 | |
data | 发送表单数据(不写时代表接收数据)new FormData($(“#form”[0]) | |
type | 请求方法:get/post(与服务器控制层一致) | |
dataType | 服务器return类型:json/xml/text/html | 不指定时自动识别 |
success | 成功响应时(响应码为2XX时)的处理函数 | |
error | 失败时响应(响应吗为2XX以外)的处理函数 | |
contentType:false | 上传 | |
contentData:false | 上传 |
error在项目中通常只处理3XX错误(400X/500X项目中不应该出现)
3.JQ代码
1 | $("#btn-login").click(function(){ |
2. JSON
1.语法
- 标签名\文本都要加双引号
- 标签名右侧冒号[+文本]
- 父标签后加大括号
- 文本中String类型需要加双引号,int类型不需要加双引号
2.与xml的比较
xml
1
2
3
4
5<state>1</state>
<data>
<username>root</username>
<age>18</age>
</data>json
1
2
3
4
5
6
7{
"state":1,
"data":{
"username":"root",
"age":18
}
}
3.Json中的数组
数组:
1
2
3
4
5
6{
"state":1,
"data": [
"Mike", "Jack", "Lucy"
]
}数组中包含对象
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17{
"state":1,
"data": [
{
"username":"Mike",
"age":23
},
{
"username":"Jack",
"age":21
},
{
"username":"Lucy",
"age":25
}
]
}
4.javascript
json可以被javascript直接识别,json.parse(str)
1 | var json = { |
3. springMVC整合
1.服务器响应String类型
1.英文类型
controller.java
只注解@ResponseBody即可,可以和@controller合并为
@RestController
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
"user") (
public class UserController {
"login.do") (
//默认不支持utf-8,添加json依赖后支持
public String handleLogin(
String username, String password) {
if ("root".equals(username)) {
if ("1234".equals(password)) {
return "OK";
} else {
return "error";
}
} else {
return "error";
}
}
}测试
只要是将数据发送给controller并转到croller页面就会发生打印现象
结果
添加后不转换地址,可以吧return直接输入到页面上
2.中文类型
原理:
相当于在html添加数据,而html响应头默认为8859-1类型的,因此需要修改默认字符集才能在页面上显示中文,否则乱码
方法1:
修改@ResponseBody为
@ResponseBody(text/html;charset=UTF-8)
方法2:
1
2
3
4
5
6
7
8
9
10
11<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
2. 服务器响应JSON格式的结果
添加依赖
1
2
3
4
5<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.8</version>
</dependency>注解驱动
- jackson必须在spring.xml中添加驱动才能起作用
- 在添加@ResponseBody注解以后只能return英文,注解驱动后可以return中文,并且可以return”json”
- 中文原理:将响应头改为:application/json; charset=UTF-8
1
<mvc:annotation-driven></mvc:annotation-driven>
创建实体类
1
2
3
4
5public class ResponseResult {
private Integer state;
private String message;
// 某些构造方法/SET/GET
}controller类
@ResponseBody//启用AJAX:默认不支持utf-8,添加json注解后支持
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
"user") (
public class UserController {
"login.do") (
//默认不支持utf-8,添加json注解后支持
public String handleLogin(
String username, String password) {
if ("root".equals(username)) {
if ("1234".equals(password)) {
return new AAA(1,"登录成功");
} else {
return new AAA(3,"密码错误");
}
} else {
return new AAA(2,"账号错误");
}
}
}页面显示结果
访问user/login.do
1
{"state":1,"message":"登录成功"}
转换器
在响应正文的过程中需要使用转换器Converter:
返回值类型String:StringHttpMessageConverter转换器
无法识别时:jackson转换器
4. 前端页面
解决方案:
通过取消form表单的提交功能
- 删除form标签
- 使用button
html
1
2
3
4
5
6
7
8<form method="post" action="handle_login.do">
<h1>用户登录</h1>
<div>请输入用户名</div>
<div><input name="username" /></div>
<div>请输入密码</div>
<div><input name="password" /></div>
<div><input id="btn-login" type="button" value="登录" /></div>
</form>jQuery
1
2
3
4
5
6<script type="text/javascript" src="jquery-1.8.3.min.js"></script>
<script type="text/javascript">
$("#btn-login").click(function(){
alert("hello, jquery!");
});
</script>写在文档的最后面.或者使用下列代码
1
2
3
4
5<script>
$(document).ready(function(){
$("#btn-login").click();
}); //网页全部加载完之后再执行
</script>
最后更新: 2019年11月06日 11:36
原始链接: https://airbash.cn/2019/11/02/%E5%89%8D%E7%AB%AF/AJAX/