• js实现ajax的post请求步骤


    post请求步骤与前篇的get请求步骤差别不大,只是增加了

     xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");

    这里直接上代码:

    在web2_testpost 分别创建两个文件posttest.jsp和test.js

    <%@ page language="java"  pageEncoding="utf-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
         <script type="text/javascript" src="./test.js"></script>
      </head>
      <body>
         <form action="" enctype="application/x-www-form-urlencoded">
              <input type="button" name="ok" id="ok" value="测试服务器连接">
          </form>
      </body>
    </html>
    //当页面加载完毕之后,执行以下代码
    window.onload = function(){
        document.getElementById("ok").onclick = function(){
            /*
             * 1    创建XMLHttpRequest对象
             */ 
             var xhr = ajaxFunction();
            
            /*
             * 2    服务器向浏览器响应请求
             * 
             * readyState 属性表示Ajax请求的当前状态。它的值用数字代表。
                    0 代表未初始化。 还没有调用 open 方法
                    1 代表正在加载。 open 方法已被调用,但 send 方法还没有被调用
                    2 代表已加载完毕。send 已被调用。请求已经开始
                    3 代表交互中。服务器正在发送响应
                    4 代表完成。响应发送完毕
                    
                常用状态码及其含义:
                    404 没找到页面(not found)
                    403 禁止访问(forbidden)
                    500 内部服务器出错(internal service error)
                    200 一切正常(ok)
                    304 没有被修改(not modified)(服务器返回304状态,表示源文件没有被修改 )
             */ 
             xhr.onreadystatechange = function(){
                 alert(xhr.readyState);
                //alert(xhr.status);
                if(xhr.readyState==4){
                    if(xhr.status==200||xhr.status==304){
                        var data = xhr.responseText;
                        alert(data);
                    }
                }
             }
            
            /*
             * 3    浏览器与服务器建立连接
             * 
             * xhr.open(method, url, asynch);
             *         * 与服务器建立连接使用
             *         * method:请求类型,类似 “GET”或”POST”的字符串。
             *         * url:路径字符串,指向你所请求的服务器上的那个文件。请求路径
             *         * asynch:表示请求是否要异步传输,默认值为true(异步)。
             */ 
             xhr.open("POST","../testServlet?timeStamp="+new Date().getTime()+"&c=18",true);
             
             //如果是POST请求方式,设置请求首部信息
             xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
             
            
            /*
             * 4    浏览器向服务器发送请求
             * 
             *     send()方法:
             *         * 如果浏览器请求的类型为GET类型时,通过send()方法发送请求数据,服务器接收不到    
             *         * 如果浏览器请求的类型为POST类型时,通过send()方法发送请求数据,服务器可以接收
             */ 
             xhr.send("a=6&b=9");        //xhr.send(null);
        }
    }
    
    function ajaxFunction(){
       var xmlHttp;
       try{ // Firefox, Opera 8.0+, Safari
            xmlHttp=new XMLHttpRequest();
        }
        catch (e){
           try{// Internet Explorer
                 xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
              }
            catch (e){
              try{
                 xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
              }
              catch (e){}
              }
        }
    
        return xmlHttp;
     }
    package com.servlet;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.io.PrintWriter;
    
    
    /**
     * Created by huangyichun on 2016/12/7.
     */
    @WebServlet(name = "testServlet",urlPatterns = "/testServlet")
    public class TestServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println("a=" + request.getParameter("a"));
            System.out.println("c=" + request.getParameter("c"));
    
            PrintWriter out = response.getWriter();
    
            out.println("get connection server success");
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println("connection...");
            System.out.println("a=" + request.getParameter("a"));
            System.out.println("c=" + request.getParameter("c"));
    
            PrintWriter out = response.getWriter();
    
            out.println("get connection server success");
        }
    }
  • 相关阅读:
    首评 | 阿里云顺利完成国内首个云原生安全成熟度评估
    基于任务调度的企业级分布式批处理方案
    阿里云发布性能测试 PTS 2.0:低成本、高效率、多场景压测,业务稳定性保障利器
    OpenKruise v1.2:新增 PersistentPodState 实现有状态 Pod 拓扑固定与 IP 复用
    ZooKeeper 在阿里巴巴的服务形态演进
    阿里云微服务引擎 MSE 5 月产品动态
    应用实时监控服务ARMS 5 月功能快报&优惠汇总
    618 大促来袭,浅谈如何做好大促备战
    「技术人生」第8篇:如何画业务大图
    Serverless Job——传统任务新变革
  • 原文地址:https://www.cnblogs.com/huangyichun/p/6142477.html
Copyright © 2020-2023  润新知