• 第二十二章 Ajax


    1. Ajax简介

            Ajax是进行网站请求的一种技术,属于js的内容,被jQuery发展;Ajax:异步JavaScript 和XML,可以在不重载整个网页的情况下,Ajax通过后台加载数据,并在网页上进行显示。

    普通的请求方式:

            浏览器发出请求,经过servlet处理后再通过转发或者重定向的方式返回个客户端,客户端需要重新加载/重新渲染页面;

    Ajax的方式:

            浏览器通过XmlHttpRequest对象发起请求,servlet只需要返回数据内容,不需要返回html页面,客户端通过Ajax对象接收返回的数据,通过js将数据显示到页面上,整个网页不需要重新加载。

    异步:

            客户端发出请求之后可以继续其他的操作,不需要等待服务器响应;

    同步:

            客户端发出请求之后必须等服务器响应之后才能继续操作。 

    2. Ajax和普通请求的区别

    普通请求:

          ①地址栏通过url发送普通请求;

          ②通过超链接发送普通请求;

          ③通过表单提交普通请求;

    普通请求的响应内容:

            服务器返回的是完整的html页面,所以浏览器需要重新加载整个页面,页面会刷新;

    普通请求是同步处理方式,一个时间点,只能做一个处理。

    Ajax请求(异步请求):

            发送方式:

                    通过js对象XmlHttpRequest对象发起Ajax异步请求,可以发送post/get请求;

            请求的响应内容:

                    浏览器对Ajax请求只需要返回数据内容,不需要返回html页面,客户端通过Ajax对象接收服务器返回的数据,用js的方式,将数据呈现到页面上;

            Ajax请求是异步处理方式,同一时间段内,可以作多个处理;

            Ajax请求是页面局部刷新。

    1. var xhr;
    2. function getTime(){
    3. //创建Ajax对象
    4. xhr = new XMLHttpRequest();
    5. //设置状态变化的回调函数
    6. xhr.onreadystatechange = function (){
    7. if(xhr.readyState==4&&xhr.status == 200){
    8. var myDiv = document.getElementById("mydiv")
    9. myDiv.innerHTML = xhr.responseText;
    10. }
    11. }
    12. //设置发送方式和请求地址 URL
    13. xhr.open("GET","${pageContext.request.contextPath}/AjaxServlet");
    14. //发送请求
    15. xhr.send();
    16. }
    readyState的取值
    取值说明
    0未初始化状态,此时创建了XMLHttpRequest对象但没有初始化
    1准备发送状态,此时已经调用了XmlHttpRequest对象的open()方法,已经准备好将Http请求发送到服务器端
    2已经发送状态,已经通过XmlHttpRequest对象的send()方法将请求发送到服务器端,但是没有收到响应
    3正在接收状态,此时已经接收到Http响应的头部信息,但是消息体部分还没有完全接收到
    4完全响应状态,此时已经完成了HttpResponse响应的接收

     3. JSON

    3.1 JSON学习回顾

             json是一种数据交换格式,采用  键值对  的文本格式来存储和表示数据,在系统交换数据的过程中常常被使用,是一种理想的数据交换语言。

    1. //js对象:
    2. var stu = {
    3. name : "张三",
    4. sex : "男",
    5. id : 1001
    6. }
    7. //json对象
    8. var stu = {
    9. "name" : "张三",
    10. "sex" : "男",
    11. "id" : 1001
    12. }
    1. //Json对象的字符串
    2. var stu2 = '{"name":"张三","sex":"男"}';
    1. //json字符串转为json对象
    2. var stu3 = JSON.parse(stu2);
    1. //json对象转json字符串
    2. var str = JSON.stringify(stu3)

    3.2 Java中JSON转换工具

            fastjson,GSON,jackson,导入相应的jar包。

    1. Map map = new HashMap();
    2. map.put("id",1000);
    3. map.put("name","张三");
    4. map.put("sex","男");
    5. System.out.println(map);
    6. //Json字符串
    7. System.out.println(JSONObject.toJSONString(map));
    8. //json对象
    9. JSONObject jsonArray = new JSONObject(map);
    10. System.out.println(jsonArray.get("id"));

    4. JQuery中Ajax的使用

    4.1 $.get()

    1. $("#btn1").click(function (){
    2. $.get(
    3. "${pageContext.request.contextPath}/AjaxServlet",
    4. {name:"张三",sex:"男"},
    5. function (res) {
    6. console.log(res);
    7. var str = "姓名:"+res.name+" 性别:"+res.sex+" 学号:"+res.id;
    8. $("#mydiv").append("

      "+str+"

      "
      );
    9. },
    10. "json"
    11. );
    12. })

     4.2 $.post()

    1. $("#btn2").click(function (){
    2. $.post(
    3. "${pageContext.request.contextPath}/AjaxServlet",
    4. {name:"张三",sex:"男"},
    5. function (res) {
    6. console.log(res);
    7. var str = "姓名:"+res.name+" 性别:"+res.sex+" 学号:"+res.id;
    8. $("#mydiv").append("

      "+str+"

      "
      );
    9. },
    10. "json"
    11. );
    12. })

    4.3 $.ajax()

    1. $("#btn3").click(function (){
    2. $.ajax({
    3. url:"${pageContext.request.contextPath}/AjaxServlet",
    4. data:{},
    5. type:"post",
    6. dataType:"json",
    7. success:function (res){
    8. var str = "姓名:"+res.name+" 性别:"+res.sex+" 学号:"+res.id;
    9. $("#mydiv").append("

      1"+str+"

      "
      )
    10. },
    11. error:function (xhr,msg) {
    12. alert(msg);
    13. console.log(xhr)
    14. }
    15. })
    16. })

  • 相关阅读:
    全网最详细4W字Flink入门笔记(下)
    C#WPF数据模板应用实例
    李开复和马斯克加入AGI大模型大战 零一万物和Grok有哪些特点
    110.网络安全渗透测试—[权限提升篇8]—[Windows SqlServer xp_cmdshell存储过程提权]
    2024最新SSL证书在线申请系统源码 | 支持API接口 支持在线付费 二开优化版
    【Vue】 toRef以及context参数(1)
    剑指Offer07.重建二叉树_解题思路&代码实现
    互联网内卷严重?你咋不看看其他行业呢?无非是三十晚上无月亮
    关于python类中的魔法方法
    soc需要映射外网吗?
  • 原文地址:https://blog.csdn.net/m0_71674778/article/details/126177067