Ajax

本文深入探讨了AJAX的基本原理及其实现方式,包括GET和POST请求的处理,以及如何解析HTML、XML和JSON数据。此外,还详细介绍了jQuery库在AJAX操作中的应用,包括数据加载、XML和JSON数据的获取与解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//POST
    <script type="text/javascript">
        window.onload = function(){
            document.getElementsByTagName("a")[0].onclick = function(){
                var request = new XMLHttpRequest();
                var url = this.href+"?time="+new Date();
                var method = "POST";
                request.open(method,url);
                request.setRequestHeader("ContentType","application/x-www-form-urlencoded");
                request.send("name='gmy'");
                request.onreadystatechange =function(){
                    if(request.readyState == 4){
                        if(request.status ==200 || request.status ==304){
                            alert(request.responseText);
                        }
                    }
                }
                return false;
            }
        }
    </script>
    <body>
        <a href="helloAjax.txt">Hello</a>
    </body>
//GET
    <script type="text/javascript">
        window.onload = function(){
            document.getElementsByTagName("a")[0].onclick = function(){
                var request = new XMLHttpRequest();
                var url = this.href+"?time="+new Date();
                var method = "GET";
                request.open(method,url);
                request.send(null);
                request.onreadystatechange =function(){
                    if(request.readyState == 4){
                        if(request.status ==200 || request.status ==304){
                            alert(request.responseText);
                        }
                    }
                }
                return false;
            }
        }
    </script>
    <body>
        <a href="helloAjax.txt">Hello</a>
    </body>
//解析HTML
    window.onload = function() {
        var aNodes = document.getElementsByTagName("a");
        for (var i = 0; i < aNodes.length; i++) {
            aNodes[i].onclick = function() {
                var request = new XMLHttpRequest();
                request.open("GET", this.href);
                request.send(null);
                request.onreadystatechange = function() {
                    if (request.readyState == 4) {
                        if (request.status == 200 || request.status == 304) {
                  document.getElementById("details").innerHTML = request.responseText;
                        }
                    }
                }
                return false;
            }
        }
    }
    <h1>People</h1>
    <ul>
        <li><a href="html/Andy.html">Andy</a></li>
        <li><a href="html/Richard.html">Richard</a></li>
        <li><a href="html/Jeremy.html">Jeremy</a></li>
    </ul>
    <div id="details"></div>
//解析XML
    window.onload =function(){
        var aNodes = document.getElementsByTagName("a");
                    
        for(var i=0;i<aNodes.length;i++){
            aNodes[i].onclick=function(){
                var request = new XMLHttpRequest();
                request.open("GET",this.href);
                request.send(null);
                request.onreadystatechange=function(){
                    if(request.readyState == 4){
                        if(request.status ==200||request.status ==304){
                            var result = request.responseXML;
                   var name = result.getElementsByTagName("name")[0].firstChild.nodeValue;
                            //alert(name);
                            var aNode = document.createElement("a");
                            var brNode = document.createElement("br");
                            aNode.appendChild(document.createTextNode(name));
                            var detailsNode = document.getElementById("details");
                            detailsNode.appendChild(aNode);
                            detailsNode.appendChild(brNode);
                        }
                    }
                }
                    return false;
                }
            }
        }
    <h1>People</h1>
    <ul>
        <li><a href="xml/Andy.xml">Andy</a></li>
        <li><a href="xml/Richard.xml">Richard</a></li>
        <li><a href="xml/Jeremy.xml">Jeremy</a></li>
    </ul>
    <div id="details"></div>
//解析JSON
    window.onload =function(){
        var aNodes = document.getElementsByTagName("a");
                    
        for(var i=0;i<aNodes.length;i++){
            aNodes[i].onclick=function(){
                var request = new XMLHttpRequest();
                request.open("GET",this.href);
                request.send(null);
                request.onreadystatechange=function(){
                    if(request.readyState == 4){
                        if(request.status ==200||request.status ==304){
                            var result = request.responseText;
                            var object = eval("("+result+")");
                            var name = object.person.name;
                            alert(name);
                        }
                    }
                }
                    return false;
                }
            }
        }
    <h1>People</h1>
    <ul>
        <li><a href="json/Andy.js">Andy</a></li>
        <li><a href="json/Richard.js">Richard</a></li>
        <li><a href="json/Jeremy.js">Jeremy</a></li>
    </ul>
    <div id="details"></div>
//JQUERY
    //load()方法
    $("#content").load(url,args);
    
    //GET XML
    $(function(){
        $("a").click(function(){
            var url = this.href;
            var args = {"time":new Date()};
            $.get(url,args,function(date){
                var name = $(date).find("name").text();
                $("#details").empty().append("<h2><a href=''>"+name+"</a></li>");
            });
            return false;
        })
    })
    
    <h1>People</h1>
    <ul>
        <li><a href="xml/Andy.xml">Andy</a></li>
        <li><a href="xml/Richard.xml">Richard</a></li>
        <li><a href="xml/Jeremy.xml">Jeremy</a></li>
    </ul>
    <div id="details"></div>
    
    //POST XML
    $(function(){
        $("a").click(function(){
            var url = this.href;
            var args = {"time":new Date()};
            $.post(url,args,function(date){
                var name = $(date).find("name").text();
                $("#details").empty().append("<h2><a href=''>"+name+"</a></li>");
            });
            return false;
        })
    })
    
    <h1>People</h1>
    <ul>
        <li><a href="xml/Andy.xml">Andy</a></li>
        <li><a href="xml/Richard.xml">Richard</a></li>
        <li><a href="xml/Jeremy.xml">Jeremy</a></li>
    </ul>
    <div id="details"></div>
    
    
    //JSON
    $(function(){
    $("a").click(function(){
        var url = this.href;
        var args = {"time":new Date()};
        $.getJSON(url,args,function(data){
            var name = data.person.name;
            $("#details").empty().append("<h2><a href=''>"+name+"</a></li>");
        });
        return false;
    })
    })
    
    <h1>People</h1>
    <ul>
        <li><a href="json/Andy.js">Andy</a></li>
        <li><a href="json/Richard.js">Richard</a></li>
        <li><a href="json/Jeremy.js">Jeremy</a></li>
    </ul>
    <div id="details"></div>
//jackson的使用
//jackson根据geter方法定位字段,可以在geter方法添加注解    
//加入jar包(jackson-annotations-2.2.2、jackson-core-2.2.2、jackson-databind-2.2.2)
//创建ObjectMapper,调用writeValueAsString方法
    List<Customer> customers = Arrays.asList(customer,new Customer("BCD", "2002"));
    jsonString = objectMapper.writeValueAsString(customers);
    System.out.println(jsonString);
//例
    $(function(){
        $(":input[name='username']").change(function(){
            var val = $(this).val();
            val = $.trim(val);
            if(val != ""){
                var url = "${pageContext.request.contextPath }/ValiateUserName";
                var args = {"userName":val,"time":new Date()};
                $.post(url,args,function(data){
                    $("#message").html(data);
                    
                });
            }
        });
    })
    <form action="" method="post">
        UserName:<input type="text" name="username"/>
        <br>
        <div id="message"></div>
        <br>
        <input type="submit" value="Submit"/>
    </form>
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
     throws ServletException, IOException {
        List<String> userNames = Arrays.asList("AAA","BBB","CCC");
        String userName = request.getParameter("userName");
        String result = null;
        if(userNames.contains(userName)){
            result = "<font color='red'>该用户名已被使用</font>";
        }else{
            result = "<font color='GREEN'>该用户名可以使用</font>";
        }
        response.setContentType("text/html;charset=UTF-8");
        response.setCharacterEncoding("UTF-8");
        response.getWriter().print(result);
    }
    
//例
    $(function(){
            var isHasCart = "${sessionScope.sc == null}";
            //alert(isHasCart);
            if(isHasCart == "true"){
                $("#cartstatus").hide();
            }else{
                $("#cartstatus").show();
                $("#bookName").text("${sessionScope.sc.bookName}");
                $("#totalBookNumber").text("${sessionScope.sc.totalBookNumber}");
                $("#totalMoney").text("${sessionScope.sc.totalMoney}");
            }
            $("a").click(function(){
                $("#cartstatus").show();
                var url = this.href;
                var args = {"time":new Date()};
                $.getJSON(url,args,function(data){
                    $("#bookName").text(data.bookName);
                    $("#totalBookNumber").text(data.totalBookNumber);
                    $("#totalMoney").text(data.totalMoney);
                });
                return false;
            });
        })    
    
    <div id="cartstatus">
    您已经将&nbsp;<span id="bookName"></span>&nbsp;加入到购物车,
    购物车中的书有&nbsp;<span id="totalBookNumber"></span>&nbsp;
    本,总价格&nbsp;<span id="totalMoney"></span>&nbsp;钱。
    </div><br><br>
    Java&nbsp;&nbsp;<a href="addToCart?id=Java&price=100">加入购物车</a>
    <br><br>
    
    Oracle&nbsp;&nbsp;<a href="addToCart?id=Oracle&price=200">加入购物车</a>
    <br><br>
    
    Struts&nbsp;&nbsp;<a href="addToCart?id=struts&price=100">加入购物车</a>
    <br><br>
    public class AddToCartServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
         throws ServletException, IOException {
            doPost(request, response);
        }
        protected void doPost(HttpServletRequest request, HttpServletResponse response) 
        throws ServletException, IOException {
            String bookName = request.getParameter("id");
            int price = Integer.parseInt(request.getParameter("price"));
            
            HttpSession session = request.getSession();
            ShoppingCart sc = (ShoppingCart) session.getAttribute("sc");
            if(sc==null ){
                sc = new ShoppingCart();
                session.setAttribute("sc", sc);
            }
            sc.addToCart(bookName , price);
            
            StringBuilder result = new StringBuilder();
            result.append("{")
                    .append("\"bookName\":\""+bookName+"\"")
                    .append(",")
                    .append("\"totalBookNumber\":"+sc.getTotalBookNumber())
                    .append(",")
                    .append("\"totalMoney\":"+sc.getTotalMoney())
                    .append("}");
            response.setContentType("text/javascript");
            response.getWriter().print(result.toString());
        }
    }
    public class ShoppingCartItem {
        private int number;
        private String bookName;
        private int price;
        public int getNumber() {
            return number;
        }
        public void setNumber(int number) {
            this.number = number;
        }
        public String getBookName() {
            return bookName;
        }
        public void setBookName(String bookName) {
            this.bookName = bookName;
        }
        public int getPrice() {
            return price;
        }
        public void setPrice(int price) {
            this.price = price;
        }
    }
    public class ShoppingCart {
        private Map<String, ShoppingCartItem> items = new HashMap<String, ShoppingCartItem>();
        private String bookName;
        
        public void addToCart(String bookName,int price){
            
            this.bookName = bookName;
            
            if(items.containsKey(bookName)){
                ShoppingCartItem item = items.get(bookName);
                item.setNumber(item.getNumber()+1);
            }else {
                ShoppingCartItem item = new ShoppingCartItem();
                item.setBookName(bookName);
                item.setPrice(price);
                item.setNumber(1);
                items.put(bookName, item);
            }
        }
        public int getTotalBookNumber(){
            int total = 0;
            for(ShoppingCartItem item:items.values()){
                total += item.getNumber();
            }
            return total;
        }
        public String getBookName() {
            return bookName;
        }
        public int getTotalMoney(){
            int money = 0;
            for(ShoppingCartItem item:items.values()){
                money += item.getNumber() * item.getPrice();
            }
            return money;
        }
    }
    
//例    
    $("#city").change(function(){
            $("#department option:not(:first)").remove();
            var city = $(this).val();
            //alert(city);
            if(city != ""){
                var url = "EmployeeServlet?method=listDepartments";
                var args = {"locationId":city,"time":new Date()};
                $.getJSON(url,args,function(data){
                    if(data.length == 0){
                        alert("当前城市没有部门!");
                    }else{
                        for(var i=0;i<data.length;i++){
                            var deptId = data[i].departmentId;
                            var deptName = data[i].departmentName;
                   $("#department").append("<option value='"+deptId+"'>"+deptName+"</option>");
                        }
                    }
                })
            }
        });
    <center>
        <br><br>
        City:
        <select id="city">
            <option value="">请选择...</option>
            <c:forEach items="${locations}" var="location">
                <option value="${location.locationId}">${location.city }</option>
            </c:forEach>
        </select>
            <br>
            <br>  
        Department:
        <select id="department">
            <option value="">请选择...</option>    
        </select>
            <br>
            <br>        
        Employee:
        <select>
            <option value="">请选择...</option>    
        </select>
        <br><br>
        <table id="empdetails" border="1" cellspacing="0" cellpadding="5" style="display:none">
            <tr>
                <th>Id<th>
                <th>Name<th>
                <th>Email<th>
                <th>Salary<th>
            </tr>
            <tr>
                <th id="id"><th>
                <th id="name"><th>
                <th id="email"><th>
                <th id="salary"><th>
            </tr>
        </table>
    </center>

转载于:https://my.oschina.net/MoreYoungGavin/blog/668019

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值