场景:提交表单更新数据
一、请求报文
1、请求行:
以及HTTP的版本,通常是1.1。
2、请求消息头
Content-Type图片中的是提交表单的类型,如果是发送Ajax请求,请求体就是一个json数据。
(1)表单请求体:application/x-www-form-urlencoded
(2)Ajax请求体:application/json;charset=UTF-8
//发送Ajax请求将adminIdArray发送给Handler方法
$.ajax({
//服务端接收请求的URL地址
"url": "admin/batch/remove.json",
//设置请求方式
"type": "post",
//设置请求体内容类型,告诉服务器当前请求体发送的是JSON数据
"contentType": "application/json;charset=UTF-8",
//请求体发送给服务器的数据
"data": JSON.stringify(adminIdArray),
//把服务器端返回的数据当作JSON格式去解析
"dataType": "json",
//服务器处理请求成功后执行的函数,响应体以参数形式传入当前函数
"success": function(response){
var result = response.result;
if (result == "SUCCESS"){
window.location.href=
"admin/query/for/search.html?pageNum="+window.pageNum+"&keyword="+window.keyword;
}
if (result == "FAILED"){
alert(response.message);
return ;
}
这样提交的请求,handler方法接收数据需要使用@RequestBody注解:
(3)multipart/form-data:用于文件上传
<form action="xxx" method="post" enctype="multipart/form-data">
3、请求体
请求当前请求要发送给服务器的数据主体,GET方式没有请求体,POST方式有请求体。
传送较大数据使用POST方式。
二、响应报文
1、响应状态码:
2、响应消息头:
Content-Type、Set-Cookie。
3、响应体:
页面(通常响应同步请求)
JSON数据(通常响应异步请求)
三、同步请求与异步请求
同步:$.ajax()后面的代码需要等$.ajax()函数把服务端响应处理完成才能继续执行。
异步:$.ajax()后面的代码不等待$.ajax()函数把服务端响应处理完,$.ajax()发送请求之后,后面的代码就开始执行了。
如果后续操作也是要等一段时间,$.ajax()先响应完了就可以先执行了。
因为异步的话,两个操作不是在同一个线程执行,所以互不干扰,并行推进。