$.ajax中get和post请求的小知识点

举报
多米诺的古牌 发表于 2022/07/30 13:08:09 2022/07/30
【摘要】 Ajax主要作用于异步刷新之中,他是Asynchronous Javascript + XML的缩写,以前写Ajax操作,原始的Ajax请求操作需要好几个必备的步骤操作核心XMLHttpRequest对象,而JQuery为了简化操作对Ajax异步操作进行了封装,就有这几种常用的请求方式: $.ajax,$.post, $.get等。

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的简单认识和总结。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。