$.ajax中get和post请求的小知识点
1.$.ajax的简介
Ajax主要作用于异步刷新之中,他是Asynchronous Javascript + XML的缩写,以前写Ajax操作,原始的Ajax请求操作需要好几个必备的步骤操作核心XMLHttpRequest对象,而JQuery为了简化操作对Ajax异步操作进行了封装,就有这几种常用的请求方式: $.ajax,$.post, $.get等。
其中$.ajax是JQuery对ajax最基础的封装,通过使用这个函数可以完成异步通讯的所有功能。也就是可以通过此方法进行异步刷新的操作。但是它的参数较多操作还是有些繁琐。 主要参数有:method是数据的提交方式:get和post;url是数据的提交路劲;async是是否支持异步刷新,默认是true;data是需要提交的数据;dataType是服务器返回数据的类型:xml,String,Json等;success是请求成功后的回调函数;error是请求失败后的回调函数。
$.ajax({
async:false,
type: "POST",
url: '${pageContext.request.contextPath}/test',
dataType:“json”,
data: {"id": id},
contentType: "application/json;charset=UTF-8",
success: function(rtn){
console.log("success")
},
error: function(rtn){
console.log("error")
},
});
需要注意的是data参数: 如果是Object或String类型的参数,发送到服务器的数据已经不是字符串,将自动转换为字符串格式。get请求中将附加在url后面防止这种自动转换。所以对象必须为key/value格式,例如{key1:"val1",key2:"val2"}转换拼接在url后面就是&key1=val1&key2=val2。如果是数组,JQuery将自动为不同值对应同一个名称。例如{key:["val1","val2"]}转换后为&ksy=val1&key=val2。
还需要注意的是dataType参数: 如果为String类型的参数,如果不指定,JQuery将自动根据http包会返回responseXML或responseText并作为回调函数参数传递。可用的类型如下:
xml:返回XML文档,可用JQuery处理;html:返回纯文本HTML信息;包含的script标签会在插入DOM时执行;script:返回纯文本JavaScript代码。不会自动缓存结果。除非设置了cache参数。注意在远程请求时不在同一个域下所有post请求都将转为get请求; json:返回JSON数据; jsonp:JSONP格式。使用SONP形式调用函数时,例如url?callback=?,JQuery将自动替换后一个“?”为正确的函数名,以执行回调函数; text:返回纯文本字符串。
2.$.ajax与后端的交互
2.1 GET请求
后端不能使用@RequestBody来接收参数,因为往GET请求里加body是不符合规范的,不保证所有的实现都支持,所以在ajax 里注意请求方式如果用 get 后端参数不能用@RequestBody 来接收它,只能通过@RequestParam来接收参数,或者通过request.getParameter("参数名")。
2.2 POST请求
后端可以使用@RequestBody和@RequestParam来接收参数,但是如果使用@RequestBody注解,对于参数转化的配置必须统一,需要和后面的实体类进行一一对应,要不会取不到值,也可以使用多个@RequestParam获取数据。
ajax请求默认contentType=application/x-www-form-urlencoded;charset:utf-8,这种格式为表单提交格式,数据为key1=value1&key2=value2格式。不使用contentType:“application/json;charset=UTF-8”, 则data里可以是json对象,在使用contentType:‘application/json;charset=UTF-8’,data里就需要传json字符串。
使用:contentType:‘application/json;charset=UTF-8’, 参数中配合:data:JSON.stringify()来进行使用。
以上就是对$.ajax的简单认识和总结。
- 点赞
- 收藏
- 关注作者
评论(0)