JS原生AJAX

本文介绍了JS原生AJAX的实现方式,包括如何编写异步请求,详细讲解了GET和POST两种请求方式。通过示例代码展示如何进行GET异步请求,以及POST请求中参数传递和请求头的设置,确保中文内容正确传输。
摘要由CSDN通过智能技术生成

AJAX各种实现方式

JS原生AJAX 

如何输写 

GET异步请求

POST异步请求


 

AJAX各种实现方式

JS原生AJAX 

原生JS的AJAX异步请求代码

如何输写 

参考我们的W3school文档,我们可以知道怎么写https://www.w3school.com.cn/ajax/ajax_xmlhttprequest_onreadystatechange.asp

 

 

结合文档,那我就自己写一个异步请求

GET异步请求

例子:单击某个按钮,异步请求servlet,然后把响应内容返回给div

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>js原生异步</title>
    <style>
        input{
            width:300px;
            height: 50px;
            background-color:burlywood ;
        }
        div{
            width:300px;
            height: 100px;
            background-color: pink;
        }
    </style>
    <script>
        function myClick() {
            var xmlhttp;
            if (window.XMLHttpRequest) {
                xmlhttp=new XMLHttpRequest();
            } else {
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.open("GET","demo1?name=林大帅",true);
            xmlhttp.send();
            xmlhttp.onreadystatechange=function() {
                if (xmlhttp.readyState==4 && xmlhttp.status==200) {
                    document.getElementById("div").innerHTML=xmlhttp.responseText;
                }
            }
        }
    </script>
</head>
<body>
    <input type="button" value="单击我触发请求" onclick="myClick();" > <br><br><br>
    <div id="div">

    </div>
</body>
</html>

demo1代码

package com.lingaolu.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;

/**
 * @author 林高禄
 * @create 2020-08-07-14:58
 */
@WebServlet("/demo1")
public class Demo1 extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String name = request.getParameter("name");
        response.setContentType("text/html;charset=utf-8");
        response.getWriter().write("<h1>"+name+"</h1>");
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

 

运行访问,单击按钮前

单击按钮后,异步把内容付给了div

POST异步请求

POST请求和GET有些不一样,传参的方式变了,而且要设置请求头

服务器的请求获取参数也有设置编码,不然中文会乱码 

例子:单击某个按钮,异步请求servlet,然后把响应内容返回给div

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>js原生异步</title>
    <style>
        input{
            width:300px;
            height: 50px;
            background-color:burlywood ;
        }
        div{
            width:300px;
            height: 100px;
            background-color: pink;
        }
    </style>
    <script>
        function myClick() {
            var xmlhttp;
            if (window.XMLHttpRequest) {
                xmlhttp=new XMLHttpRequest();
            } else {
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.open("POST","demo1",true);
            xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
            xmlhttp.send("name=林大帅");
            xmlhttp.onreadystatechange=function() {
                if (xmlhttp.readyState==4 && xmlhttp.status==200) {
                    document.getElementById("div").innerHTML=xmlhttp.responseText;
                }
            }
        }
    </script>
</head>
<body>
    <input type="button" value="单击我触发请求" onclick="myClick();" > <br><br><br>
    <div id="div">

    </div>
</body>
</html>
package com.lingaolu.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;

/**
 * @author 林高禄
 * @create 2020-08-07-14:58
 */
@WebServlet("/demo1")
public class Demo1 extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        String name = request.getParameter("name");
        response.setContentType("text/html;charset=utf-8");
        response.getWriter().write("<h1>"+name+"</h1>");
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

启动访问,单击按钮前

单击按钮后

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深知她是一场梦

你打不打赏,我都会一直写博客

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值