zoukankan      html  css  js  c++  java
  • Ajax

    AJAX:即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。
    AJAX = 异步 JavaScriptXML标准通用标记语言的子集)。
    AJAX 是一种用于创建快速动态网页的技术。
    通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
    优点:局部刷新,减少等待时间,节省很多的带宽
    核心对象:XMLHttpRequest

    步骤一:使用ajax发送get请求及处理响应

    1:servlet配置如下:

    package servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class RegisterServlet extends HttpServlet {
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            doPost(request, response);
        }
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            String name=request.getParameter("uname");
            if(name.equals("admin"))
            {
                response.getWriter().write("OK");
            }
            else
            {
                response.getWriter().write("NO");
            }
        }
    
    }

    2:重头戏,配置index.jsp页面

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'index.jsp' starting page</title>
        <script type="text/javascript">
        
          //给文本框注册一个失去焦点事件
        window.onload=function(){
            var dom=document.getElementById("txtName");
              dom.onblur=function(){
                 myajax();
              };
        
        };
          
        
        function myajax(){
        
           //01.定制出 xhr对象
           var xhr;
           //02.能力检测
           if(window.XMLHttpRequest){
               //非IE浏览器   
              xhr=new XMLHttpRequest();
           }else{
              //IE内核
              xhr=new ActiveXObject("Microsoft.XMLHttp");
           }
            var dom=document.getElementById("txtName");
            var myspan=document.getElementById("msg");
            var myval=dom.value;
           //03.构建请求地址
           //xhr.open("请求类型","请求地址","是否异步");
           xhr.open("get","<%=path%>/servlet/CheckUserServlet?uname="+myval,true);
    
           //04.设置回调函数     响应回来的数据
           xhr.onreadystatechange=function(){
             //什么
             if(xhr.readyState==4&&xhr.status==200){
                //获取响应数据
                var data=xhr.responseText;
                if(data=='OK'){
                    
                     myspan.innerText="用户名已经被注册";
                }else{
                
                     myspan.innerText="用户名可以注册";
                }
             }
           };
           
           
           //05.用send真正的发送请求
           xhr.send(null);
    
           }
           
        </script>
      </head>
      
      <body>
        <input type="text" name="txtName" id="txtName"/> <span id="msg"></span><br/>
        <input type="password" name="txtPwd"/>
      </body>
    </html>

    步骤二:使用ajax发送post请求

    servlet不变:在index.jsp中添加

       window.onload=function()
        {
            var dom=document.getElementById("txtName");
            dom.onblur=function()
            {
                myajax();
            };
        };
        function myajax()
        {
            var xhr;
            if(window.XMLHttpRequest)
                {
                  xhr=new XMLHttpRequest();
                }
            else
                {
                  xhr=new ActionXObject("Microsoft.XMLHttp");
                }
            var dom=document.getElementById("txtName");
            var myspan=document.getElementById("msg");
            var myvalue=dom.value;
            xhr.open("post", "<%=path%>/servlet/RegisterServlet?uname="+myvalue,true);
            xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
            xhr.onreadystatechange=function()
            {
                if(xhr.readyState==4&&xhr.status==200)
                    {
                    var data=xhr.responseText;
                    if(data=='OK')
                        {
                        myspan.innerText="用户名已经被注册";
                        }
                    else
                        {
                        myspan.innerText="用户名可用";
                        }
                    }
            };
            xhr.send(data);
        }

    使用GET和POST方式提交的区别

    get:指定XMLHttpRequest对象的open()中的method参数为“get”

           指定XMLHttpRequest对象的send方法中的data参数为null

    post:1.指定XMLHttpRequest对象的open()方法中method参数为post

             2.指定XMLHttpRequest对象要请求的HTTP头信息,该HTTP请求头为固定写法

            指定XMLHttpRequest对象的send方法中的data需要传递具体的数据!

    步骤三:使用jquery实现ajax

    servlet不变,index.jsp代码如下:

      //给文本框注册一个失去焦点事件
          $(function(){
             //等待页面上所有标签完毕后执行
             var dom=$("#txtName");
             dom.blur(function(){
                myjquery();
             });
          });
          
          
          function  myjquery(){
          var dom=$("#txtName");
            $.ajax({
              url:'<%=path%>/servlet/CheckUserServlet',
              type:'post',
              data:{uname:dom.val()},
              success:function(today){
                 //today server  打到 浏览器的数据
                 alert(today);
              }
            });
          
          
          }

    比javascript方式简单多了,,,,

    步骤四:初识json

    JSON(即json)简介:

      JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(网络传输速率)。

    JSON语法规则:

           JSON 语法是 JavaScript 对象表示语法的子集。

    1. 数据在名称/值对中

    2. 数据由逗号分隔

    3. 花括号保存对象

    4. 方括号保存数组

    5. json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构。

      1. 对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种

      2. 数组:数组在js中是中括号“[]”括起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。

             经过对象、数组2种结构就可以组合成复杂的数据结构了。

         //var json={"firstName":"yym","secondName":"myy","thirdName":"ymy"};
         
         
         /*$.each(json,function(i,dom){
            alert(dom);
         });*/
         
         /*var json=
         {
        "people":[
            {"firstName":"孙悟空","lastName":"大闹天宫","email":"aaaa"},
            {"firstName":"美猴王","lastName":"花果山山大王","email":"bbbb"},
            {"firstName":"大圣","lastName":"天上各位尊神尊称他","email":"cccc"},
              {"firstName":"弼马温","lastName":"人生第一份工作","email":"DDDD"}
        ]
       };
       
       $.each(json.people,function(i,dom){
            alert(dom.firstName+"
    "+dom.lastName);
       });*/
     
       var json={
        "programmers": [{
            "firstName": "Brett",
            "lastName": "McLaughlin",
            "email": "aaaa"
        }, {
            "firstName": "Jason",
            "lastName": "Hunter",
            "email": "bbbb"
        }, {
            "firstName": "Elliotte",
            "lastName": "Harold",
            "email": "cccc"
        }],
        "authors": [{
            "firstName": "Isaac",
            "lastName": "Asimov",
            "genre": "sciencefiction"
        }, {
            "firstName": "Tad",
            "lastName": "Williams",
            "genre": "fantasy"
        }, {
            "firstName": "Frank",
            "lastName": "Peretti",
            "genre": "christianfiction"
        }],
        "musicians": [{
            "firstName": "Eric",
            "lastName": "Clapton",
            "instrument": "guitar"
        }, {
            "firstName": "Sergei",
            "lastName": "Rachmaninoff",
            "instrument": "piano"
        }]
    };
         $.each(json.programmers,function(i,dom){
            alert(dom.firstName+"
    "+dom.lastName);
       });

    注意:在此换行一直是“/n”,我一直忘记了哈哈!

  • 相关阅读:
    webpack前端构建工具学习总结(一)之webpack安装、创建项目
    当执行 import vue from 'vue' 时发生了什么?
    WEBSTORM新建VUE类型文件设置
    基于vue-cli搭建HelloWorld项目
    vue-cli脚手架安装
    浏览器的重绘和回流
    strcpy和strncpy用法和区别
    &与&&有什么区别?
    状态机实践入门
    12864点阵液晶显示模块的原理和实例程序(HJ12864M-1)
  • 原文地址:https://www.cnblogs.com/chimingyang/p/5960949.html
Copyright © 2011-2022 走看看