在一次做项目中,偶然体会到ajax的get和post请求的区别,其他的区别都和javaWeb中的一样,在此也一一列举一下:
一:携带给后端的信息位置不一样
get直接在地址后面拼接查询的字符串
post在请求体内进行信息的查询
二:携带的数据大小不一样
get:因为拼接在地址后面,大小在2kb左右
post:因为在请求体内,数据大小不受限制,除非服务器有显示
三:安全性能
get:明文发送,不安全
post:相对安全
四:携带的数据格式不一样
get:因为携带的数据是直接拼接在地址后面,只能使用url编码
post:因为在请求体内,所以可有多种形式,但是需要提前说明
举例说明:
这里写了一个点击事件,用来获取所有选中复选框的id,然后转为json对象的形式发送给后端
$("#removeAll").click(function () {
var jsonArr = [];
//遍历所有复选框
$(".chkbox:checked").each(function(){
//获取相应的购物车id
var id = $(this).attr("product-id");
console.log($(this).attr("product-id"));
//将数据转换为json对象,添加到数据
var json = {"id":id};
jsonArr.push(json);
});
$.get("shopcart.do?m=removeMore&cartId="+JSON.stringify(jsonArr),function (data) {
if(data=="ok"){
location.href="http://localhost:8080/shopcart.do?m=showAllCart";
}
})
})
浏览器的控制台可以看到都可以获取到它们的id
后端控制台可以看到这个错误
意思就是在请求目标中找到无效字符串,说明get请求不能将json对象格式的编码信息通过url传给后端,这里我们只需要改成post请求即可完成该需求。