Ajax的基本操作

本文详细介绍了原生Ajax的GET和POST请求操作,包括创建XMLHttpRequest对象、设置请求方式、调用回调函数和发送请求。同时,通过示例展示了JQuery中使用ajax()、get()和post()进行Ajax请求的方法。强调了POST请求设置HTTP头的重要性。
摘要由CSDN通过智能技术生成

Ajax操作

一、原生Ajax

1.1 操作步骤
  1. 创建XMLHttpRequest对象。
  2. 设置请求方式。
  3. 调用回调函数。
  4. 发送请求。
1.2 GET请求操作

前台

<body>
    <div>
        <h4>请输入要添加的用户的信息:</h4><br>
        <form action="/addStudent" method="post">
            学号:<input name="studentNo" id="studentNo" type="text" onclick="clearInfo()" onblur="checkNo()"><span id="studentNo_info"></span><br><br>
            姓名:<input name="stuName" type="text"><br><br>
            年龄:<input name="stuAge" type="text"><br><br>
            <input type="submit" value="添加"><i></i><input type="reset">
        </form>
    </div>
</body>
<script type="text/javascript">
    function checkNo() {
        //1. 创建XMLHTTPRequest对象
        var xmlHTTP;
        if(window.XMLHttpRequest){
            //非IE
            xmlHTTP = new XMLHttpRequest();
        }else if (window.ActiveXObject){
            //IE
            xmlHTTP = new ActiveXObject("Microsoft.XMLHTTP");
        }
        var parameter = document.getElementById("studentNo").value;
        console.log("parameter:"+parameter);
        //2. 设置请求方式
        xmlHTTP.open("get","/FindNO?studentNo="+parameter+"&time="+Math.random(),true);//添加时间随机参数,防止读取缓存
        //3. 调用回调函数
        xmlHTTP.onreadystatechange = function () {
            if(xmlHTTP.readyState == 4){
                var flag = xmlHTTP.responseText;
                if(xmlHTTP.status == 200){
                    //接收返回的内容
                    if(flag==1){
                        var obj = document.getElementById("studentNo_info");
                        obj.innerText = "学号已存在";
                    }
                }else{
                    alert("Ajax服务器返回错误");
                }
            }
        }
        //4. 发送请求
        xmlHTTP.send(null)
    }
    function clearInfo() {
        var obj = document.getElementById("studentNo_info");
        obj.innerText = "";
    }
</script>

GET请求的参数是在第二步的时候就拼接好了的,所以第四步发送时,send方法参数只需写null就好。

后台

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1. 接收参数
        req.setCharacterEncoding("utf-8");//这种方式只对POST请求有效
        String studentNo = req.getParameter("studentNo");
        //2. 验证  注意:ajax请求处理完毕后,返回数据时使用PrintWriter输出流,且ajax默认返回原页面
        StudentService stuService = new StudentServiceImpl();
        Student student = stuService.findStuByNO(studentNo);
        resp.setContentType("text/html;charset=utf-8");//返回的值参数有中文的话,这个必须要有
        PrintWriter writer = resp.getWriter();
        if(student!=null){
            //用户名已存在
            writer.print(1);
        }else{
            //用户名不存在
            writer.print(0);
        }
    }
1.3 POST请求操作

前台

<body>
    <div>
        <h4>请输入要添加的用户的信息:</h4><br>
        <form action="/addStudent" method="post">
            学号:<input name="studentNo" id="studentNo" type="text" onclick="clearInfo()" onblur="checkNo()"><span id="studentNo_info"></span><br><br>
            姓名:<input name="stuName" type="text"><br><br>
            年龄:<input name="stuAge" type="text"><br><br>
            <input type="submit" value="添加"><i></i><input type="reset">
        </form>
    </div>
</body>
<script type="text/javascript">
    function checkNo() {
        //1. 创建XMLHTTPRequest对象
        var xmlHTTP;
        if(window.XMLHttpRequest){
            //非IE
            xmlHTTP = new XMLHttpRequest();
        }else if (window.ActiveXObject){
            //IE
            xmlHTTP = new ActiveXObject("Microsoft.XMLHTTP");
        }
        //2. 设置请求方式
        xmlHTTP.open("post","/FindNo",true);//添加时间随机参数,防止读取缓存
        //3. 调用回调函数
        xmlHTTP.onreadystatechange = function () {
            if(xmlHTTP.readyState == 4){
                var flag = xmlHTTP.responseText;
                console.log("flag:"+flag);
                if(xmlHTTP.status == 200){
                    //接收返回的内容
                    if(flag==1){
                        var obj = document.getElementById("studentNo_info");
                        obj.innerText = "学号已存在";
                    }
                }else{
                    alert("Ajax服务器返回错误");
                }
            }
        }
        //4. 发送请求
        var parameter = document.getElementById("studentNo").value;
        var params = "studentNo="+parameter;//添加时间随机参数,防止读取缓存
        xmlHTTP.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset=UTF-8");//向请求添加HTTP头,POST有数据一定要加
        xmlHTTP.send(params)//有参数就写参数,没有直接写null
    }
    function clearInfo() {
        var obj = document.getElementById("studentNo_info");
        obj.innerText = "";
    }
</script>

tips:

!!!POST请求一定要设置HTTP头,不然后台接收不到传来的参数xmlHTTP.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset=UTF-8");

后台

参照GET方式

二、JQuery中的Ajax

三种方式:

  1. 用ajax()
<body>
    <div>
        <h4>请输入要添加的用户的信息:</h4><br>
        <form action="/addStudent" method="post">
            学号:<input name="studentNo" id="studentNo" type="text" onfocus="clearInfo()"><span id="studentNo_info"></span><br><br>
            姓名:<input name="stuName" type="text"><br><br>
            年龄:<input name="stuAge" type="text"><br><br>
            gao:<input type="text" id="hello">
            <input type="submit" value="添加"><i></i><input type="reset">
        </form>
    </div>
</body>
<script type="text/javascript" src="/js/jquery-1.8.0.min.js"></script>
<script type="text/javascript">
    function clearInfo() {
        var obj = document.getElementById("studentNo_info");
        obj.innerText = "";
    }
    $(function () {
        $("#studentNo").blur(function () {
            var parameter = $(this).val();
            $.ajax({
                url:"/FindNo",
                data:"studentNo="+parameter+"&time="+Math.random(),
                type:"get",
                data_type:"text",
                success:function (result) {
                    if(result==1){
                        $("#studentNo_info").text("用户已存在");
                    }
                },
                error:function () {
                    alert("出错啦...")
                }
            });
        });
    })
</script>
  1. 用get()
$.get("/FindNo","studentNo="+parameter+"&time="+Math.random(),function (result) {
    if(result==1){
    	$("#studentNo_info").text("用户已存在");
    }
})
  1. 用post()
$.post("/FindNo","studentNo="+parameter+"&time="+Math.random(),function (result) {
    if(result==1){
    	$("#studentNo_info").text("用户已存在");
    }
})

get()和post()虽然简洁,但是 功能也没有ajax()多,例如,ajax还可以设置error错误回调函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值