原生实现ajax

1 什么是ajax

  • AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。

  • AJAX 不是新的编程语言,而是一种使用现有标准的新方法。

  • AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。

  • AJAX 不需要任何浏览器插件,但需要用户允许 JavaScript 在浏览器上执行。

  • XMLHttpRequest 只是实现 Ajax 的一种方式。

ajax工作原理:

  • 简单来说,我们之前发的请求通过类似 form表单标签,a标签 这种方式,现在通过 运行js代码动态决定什么时候发送什么样的请求

  • 通过运行JS代码发送的请求浏览器可以不用跳转页面 ,我们可以在JS代码中决定是否要跳转页面

  • 通过运行JS代码发送的请求,接收到返回结果后,我们可以将结果通过dom编程渲染到页面的某些元素上,实现局部更新

HTML 页面

1. <DOCTYPE html>

这定义了文档类型和版本,告诉浏览器这是一个 HTML5 文档。

2. <html lang="en">

这定义了 HTML 文档的根元素,并设置文档的语言为英语(en)。

3. <head>

这是文档的头部,包含了元数据(如字符编码和标题)以及脚本(如 JavaScript)。

  • <meta charset="UTF-8">:定义文档使用的字符编码为 UTF-8。
  • <title>Title</title>:设置网页的标题为“Title”。
4. <script>

这定义了一个 JavaScript 函数 getMessage

  • 函数内部首先创建了一个新的 XMLHttpRequest 对象,用于发送异步请求。
  • 设置 onreadystatechange 回调函数,当请求的状态发生变化时执行。
  • 在回调函数中,检查请求是否完成(readyState == 4)且响应状态码为 200(表示成功)。
  • 如果请求成功,将响应的文本内容打印到控制台,并将其设置为具有 id="message" 的输入元素的值。
  • 使用 request.open 方法设置请求方法和 URL(/hello?username=zhangsan)。
  • 使用 request.send 方法发送请求。
5. <body>

这是文档的主体部分。

  • <button onclick="getMessage()">按钮</button>:定义一个按钮,当点击时调用 getMessage 函数。
  • <input type="text" id="message"/>:定义一个文本输入框,其 id 为 "message",用于显示从服务器获取的消息。

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        function getMessage(){
            //实例化一个xmlHttpRequest
            var request = new XMLHttpRequest();
            //设置xmlHttpRequest对象的回调函数
            request.onreadystatechange= function (){
                if(request.readyState == 4 && request.status ==200){
                   console.log(request.responseText)
                    var inputEle = document.getElementById("message")
                    inputEle.value=request.responseText
                }
            }
            //设置发送请求的方式和请求的资源路径
            request.open("GET","/hello?username=zhangsan")
            //发送请求
            request.send();
        }
    </script>
</head>
<body>
<button onclick="getMessage()">按钮</button>
<input type="text" id="message"/>
</body>
</html>

Java Servlet

1. @WebServlet("/hello")

这是一个注解,表示这个 Servlet 响应的 URL 路径为 /hello

2. public class HelloServlet extends HttpServlet

定义了一个名为 HelloServlet 的类,它继承了 HttpServlet

3. service 方法

重写了 service 方法来处理 HTTP 请求。

  • 从请求中获取名为 "username" 的参数。
  • 使用响应的 writer 将 "hello" 和用户名拼接后的字符串写回给客户端。

HelloServlet.java

@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String username = req.getParameter("username");
        resp.getWriter().write("hello"+username);
    }
}

 

 

总结

      当用户在 HTML 页面上点击按钮时,JavaScript 函数 getMessage 会被调用,该函数会向服务器发送一个 GET 请求到 /hello?username=zhangsan。服务器上的 HelloServlet 会处理这个请求,并返回 "hellozhangsan" 字符串。然后,JavaScript 会将这个字符串设置到 ID 为 "message" 的输入框中。

这样,用户就可以在输入框中看到从服务器返回的消息了。

相关推荐

  1. C#面:AJAX的底层实现原理

    2024-04-21 02:26:04       9 阅读
  2. jquery实现Ajax请求

    2024-04-21 02:26:04       36 阅读
  3. Ajax 请求的原理

    2024-04-21 02:26:04       40 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-21 02:26:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-21 02:26:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-21 02:26:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-21 02:26:04       18 阅读

热门阅读

  1. Vue08天禹老师主讲

    2024-04-21 02:26:04       30 阅读
  2. R:UpSet韦恩图制作

    2024-04-21 02:26:04       31 阅读
  3. Linux命令学习—DNS 服务器

    2024-04-21 02:26:04       18 阅读
  4. Linux下多版本cuda切换

    2024-04-21 02:26:04       20 阅读
  5. React + 项目(从基础到实战) -- 第六期

    2024-04-21 02:26:04       16 阅读
  6. ARM-学习day8

    2024-04-21 02:26:04       12 阅读
  7. Vue3不用任何构建的原始HTML

    2024-04-21 02:26:04       11 阅读
  8. ARM_day8:基于iic总线的通信

    2024-04-21 02:26:04       15 阅读
  9. 【rust编译错误解读】

    2024-04-21 02:26:04       17 阅读
  10. 【无标题】

    2024-04-21 02:26:04       10 阅读
  11. P2483 【模板】k 短路 / [SDOI2010] 魔法猪学院

    2024-04-21 02:26:04       15 阅读