原生实现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" 的输入框中。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值