21天学通Java学习笔记-Day13(javascript-ajax)

HTML & CSS : 不知道怎么做笔记,不知道怎么系统学习!

JavaScript:

    两种表现形式:

        1:直接在 HTML 中嵌入 javascript 脚本:

            demo.html

          

  <html>
                 <head>
                      <title>
                           test
                      </title>
                 </head>
                 <body >
                      <script type="text/javascript">
                           alert("hello javascript wolrd!!");
                     </script> 
                 </body>
            </html>

 

        2:将 javascript 代码放在 js 文件中:

            demo.html

           

 <html>
                 <head>
                      <title>
                           test
                      </title>
                 </head>
                 <body >
                      <script type="text/javascript" src="demo.js">
                      </script>
                 </body>
            </html>

 demo.js

           

 alert("hello javascript wolrd!!");

 

JavaScript 是弱类型语言,不需要声明数据类型,声明变量要用关键字 var :

    var name = "joe";  //字符串类型

    var age = 12;  //整数类型

 

    也可以连着声明和赋值:

        var name = "joe" , age = 12 ;

javascript 没有声明类型所以变量可以放任何类型:

            var name = "joe";

            name = 12;  //会覆盖掉原来的"joe"

 

javascript 基础类型:

    数值:

        整数    var a = 123;

        浮点    var b = 12.34;

        负数    var c = -23;

    字符串:    var d = "hello";

    布尔值:    var e = true 或者 false

    数组:var f = new Array( );  也可以规定数组长度  var f = new Array( 5 );

                     f[ 0] = 1;   

                     f[ 1] = 2; 

                     .................. 

    数组简化定义:

        var f = [ ];

        数组也可以直接赋值:

            var f = new Array(1, 2, 3, 4);

        数组甚至可以呼和类型:

            var f = new Array("a", 2, false);

    关联数组(不以下标作为索引):

        var g = new Array( );

        g["name"] = "joe";

        g["age"] = 12;

        g["living"] = false;

        //关联数组提高可读性

 

算术操作符:

    +(加) , -(减) , *(乘) , /(除) , %(求模)

 

javascript 支持 ++(自增) , --(自减)

javascript 也支持快捷操作:

    a += 1;

    a *= 1;

    a -= 1;

    a /= 1;

    a %= 1;        

 

javascript 比较操作符:

    ==    等于

    <        小于

    >        大于

    <=        小于等于

    >=        大于等于

    !=         不等于

 

javascript 逻辑操作符:

    &&    逻辑与

    ||        逻辑或

    !        逻辑非

 

循环分支语句,if else , while , do while , for 与java用法一样

 

javascript 函数,定义函数要用关键字 function:(函数可以带有参数)

   

 function show( ){
        var bea = Array("name" , "age" );
        for( var a = 0; a<bea.length; a++) {
            alert(bea[ a]);
        }
    }

 

在函数中的变量使用 var 就会视为局部变量,如果没有 var 就视为全局变量

 

javascript 可以直接 new 一个对象并且赋值给一个变量

    var a = new e;

 

javascript 内置对话框:

    alert( );            对话框

    confirm( );    确认对话框

 

<html>
 <head>
  <script type="text/javascript">
   function confirmit(){
    if(confirm("are you ok?")){
     document.test.submit();
    }
   }
  </script>
 </head>
 <body>
  <form name="test" action="" method="post" >
  <input type="button" value="delete" onclick="javascript:confirmit()" name="aaa">
 </body>
</html>


 

form 表单    onclick="......"事件在点击后发生

 

DOM 的一些内置对象:

    window    当前窗口

        window.onload = function(){  }; //当页面全部加载以后再执行里面的代码

<html>
 <head>
  <script type="text/javascript">
   window.onload = function(){
    alert("hello javascript wolrd!!");
   };
  </script>
 </head>
 <body>
  HELLO
 </body>
</html>


 

    document    当前文档对象

DOM 的一些方法:

    getElementById( id);  //返回一个给定 id 属性值的元素节点相对应对象。

代码:

<html>
 <head>
  <title>
   test
  </title>
 </head>
   <body >
  <h1>hello</h1>
  <ul id="uu">
   <li>aaaaa</li>
   <li>bbbbb</li>
   <li>ccccc</li>
   <li>ddddd</li>
  </ul>
  <script type="text/javascript">
   alert(typeof document.getElementById("uu"));  //typefo:返回对象类型 ; documen:页面本身对象
  </script>
   </body>
</html>


 

    getElementsByTagName( );  //返回一个对象数组,每个对象分别对应着文档里有着给定标签的一个元素。

代码:

 

<html>
 <head>
  <title>
   test
  </title>
 </head>
   <body >
  <h1>hello</h1>
  <ul id="uu">
   <li>aaaaa</li>
   <li>bbbbb</li>
   <li>ccccc</li>
   <li>ddddd</li>
  </ul>
  <script type="text/javascript">
    var a = document.getElementsByTagName("li");
    for(var i=0;i<a.length;i++){  
    alert(typeof a[i]);   //会跳出三个对话框
    }
 </script>
   </body>
</html>

 

    getAttribute( );   //获取属性值。

     代码:

<html>
 <head>
 </head>
 <body>
   <p id="intro" title="tiin">
 Hello World!!
 </p>
 </body>
 <script type="text/javascript">
    var a = document.getElementById("intro");
    var t = a.getAttribute("title");;
     alert(typeof a);
  </script>
</html>


 

 

<html>
 <head>
  <script type="text/javascript">
   function check(){           //定义方法
    if(document.test.t.value==""){  //判断页面对象document 中的 test.t 的值是否是空
     alert("NOT NULL!!");
     return false;     //返回flase
    }
    return true;                 //返回true
   }
  </script>
 </head>
 <body>
  <form name="test" action="" method="post" onsubmit="return check()">
  <input type="text" name="t">
  <input type="submit" value="ok">
 </body>
</html>


 

form表单    action=""提交后转到哪个页面    method="post"提交方式    onsubmit ="return true(true表示提交,flase表示不提交)"必须完成里面内容才提交成功 

 

<html>
 <head>
  <script type="text/javascript">
   function check(){
    if((test.t.value.length<3)||(test.t.value.length>6)){ //直接获取form的name和input的name
     alert("t {3-6}");
     return false;
    }
 return true;
   }
  </script>
 </head>
 <body>
  <form name="test" action="" method="post" onsubmit="return check()">
  <input type="text" name="t">
  <input type="submit" value="ok">
 </body>
</html>


 

 

<html>
 <head>
  <script type="text/javascript">
   function check(){
    if((test.t.value.length<3)||(test.t.value.length>6)){
     document.getElementById("usernameErr").innerHTML = "<font color='red'>请输入正确的用户名,用户名长度为3-6位!</font>"; //innerHTML 输出HTML内容标签
  test.t.focus();  //失去焦点
     return false;
    }
 return true;
   }
  </script>
 </head>
 <body>
  <form name="test" action="" method="post" onsubmit="return check()">
  <input type="text" name="t">
  <input type="submit" value="ok">
 <span id="usernameErr"></span>
 </body>
</html>


 

 

Ajax:

    HMLHttpRequest:

        创建实例:

         

var xhr = new XMLHttpRequest( );

  IE浏览器中创建 ActiveX 对象:

 

 var xhr =new ActiveXObject("Microsoft.XMLHTTP");

检测是否存在 ActiveX:

if( window.ActiveXObject ) {
var xhr = new ActiveXObject("Microsoft.XMLHTTP");
} 


 

    将检测对象打包成可复用函数:

      

  function getHTTPObject( ) {
            var xhr = false;
            if( window.ActiveXObject ) {
                xhr = new ActiveXObject("Microsoft.XMLHTTP");
            }else{
                  xhr = new XMLHttpRequest( );   
              }
            return xhr;    
        }

 

        

var request = getHTTPObject( );   //赋给变量,方便调用

完美创建 XMLHttpRequest :

 

 var xhr;
   var myxhr;
 
   function getHttpObject(){
    xhr = false;
    if(window.XMLHttpRequest){
     xhr = new XMLHttpRequest();
     
    }else if(window.ActiveXObject){
     try{
      xhr = new ActiveObject("Msxml12.XMLHTTP");
     
     }catch(e){
      try{
       xhr = new ActiveXObject("Microsoft.XMLHTTP");
       
      }catch(e){
       xhr = false;
       }
      }
     }
     return xhr;
   }

 

创建 XMLHttpRequest 实例后,实现与服务器进行通讯,包含三个关键部分:

   ( 1 )   onreadystatechange 事件处理函数

       

 var myxhr = getHttpObject();
            if( myxhr ) {
                myxhr.onreadystatechange = huidiaohanshu; //一个回调函数,不需要括号
            }

    ( 2 ) open 方法

        open方法必须要有三个参数( 请求类型,服务器上文件的位置,true )

            请求类型 分为:POST,    GET(从服务器检索文件用GET,向服务器发送数据用POST)

            服务器文件位置 URL

            true,表示异步传输

                url = "test.txt";

                myxhr.open( "GET", url, true );

    ( 3 ) send 方法

            请求类型是GET,参数null

                myxhr.send(null);

接收响应:

    readyState 属性表示 Ajax 请求的当前状态。

        0 代表未初始化。还没有调用 open 方法。

        1 代表正在加载。open 方法已经调用,单 send 方法还没有被调用。

        2 代表已经加载完毕。send 方法已经被调用,请求已经开始。

        3 代表交互中。服务器正在发送响应。

        4 代表完成。响应发送完毕。

function displayResponse(myxhr){
         if(myxhr.readyState == 4){
                //加载完成
         }


status 属性表示服务器发送状态。

        404 表示找不到服务器资源。

        403 表示禁止访问。

        500 表示内部服务器出错。

        200 表示一切正常。

     

  function displayResponse(myxhr){
         if( myxhr.readyState == 4 ){
              if( myxhr.status==200 ){
                    //服务器正常
              }  
         }

responseText

        服务器返回字符串,返回时HTML还是XML取决于服务器

 

responseXML

        服务器返回的是XML

 

XML 是一种通用的标记语言,用于对数据进行描述。

XML 属于一种描述性语言,文档结构需要遵循一定的规范,但所用的词语没有任何限制。

    例子代码:

        

<?xml version="1.0" encoding="utf-8" ?>
        <person>
            <name>Joe</name>
            <age>20</age>
            <email>[email protected]</email>
        </person>

第一行<?xml version="1.0" encoding="utf-8" ?>是XML声明,制定了版本和字符编码。

xml 的标签都是成对出现。

xml 不能进行任何操作,用来储存数据。

 

读取 XML 内容操作:(包含test1.xml,test2.xml,test3,xmldemo.html,)

xmldemo.html 代码:

<html>
 <head>
  <script type="text/javascript" src="xmltest.js"></script>
 </head>
 <body>
  <h1>People</h1>
  <ul>
   <li>
    <a href="test1.xml" onclick="grabFile(this.href);return false;">Andy</a>
   </li>
   <li>
    <a href="test2.xml" onclick="grabFile(this.href);return false">Tom</a>
   </li>
   <li>
    <a href="test3.xml" onclick="grabFile(this.href);return false">Suy</a>
   </li>
  </ul>
  <div id="xxx"></div> 
 </body>
</html>


 

xmltest.js 代码:

var xhr;
var myxhr;
function getHttpObject(){
xhr = false;
if(window.XMLHttpRequest){
 xhr = new XMLHttpRequest();
 }else if(window.ActiveXObject){
 try{
  xhr = new ActiveObject("Msxml12.XMLHTTP");
 }catch(e){ 
  try{
   xhr = new ActiveXObject("Microsoft.XMLHTTP");
   
  }catch(e){
   xhr = false;
   }
  }
 }
 return xhr;
}
 
function grabFile(file){
 myxhr = getHttpObject();
 if(myxhr){
   myxhr.onreadystatechange = function(){
   parseResponse(myxhr);
  }; //指定一个回调函数,处理从服务器返回的结果.
  url = file;
  myxhr.open("GET",url,true); //准备发送,,true表示同步处理
  myxhr.send(null); //发送请求
 }
}
 
function parseResponse(myxhr){
 if(myxhr.readyState == 4){
  if(myxhr.status == 200 || myxhr.status == 304){
   var data = myxhr.responseXML;
   var name = data.getElementsByTagName("name")[0].firstChild.nodeValue
   var website = data.getElementsByTagName("website")[0].firstChild.nodeValue
   var email = data.getElementsByTagName("email")[0].firstChild.nodeValue
   var a= "<font color='red'>"; 
   var b = "</font>";
   document.getElementById("xxx").innerHTML=a+name+"<br/>"+website+"<br/>"+email+b;
   } 
  }
}


 

test1.xml 代码:

<?xml version="1.0" encoding="utf-8" ?> 
<person> 
<name>Andy</name>
<website>www.andy.com</website>
<email>[email protected]</email>
</person>


 

test2.xml 代码:

<?xml version="1.0" encoding="utf-8" ?> 
<person> 
<name>Tom</name>
<website>www.tom.com</website>
<email>[email protected]</email>
</person>


 

test3.xml 代码:

<?xml version="1.0" encoding="utf-8" ?> 
<person> 
<name>Suy</name>
<website>www.suy.com</website>
<email>[email protected]</email>
</person>


 

以上代码要放进服务器里跑(比如:Apache,Tomcat)

 

简单验证名字是否重复(包含test.html 和 test.txt 两个文件):
test.html代码:

<html>
 <head>
  <script type="text/javascript">
   var xhr;
   var myxhr;
   function getHttpObject(){
    xhr = false;
    if(window.XMLHttpRequest){
     xhr = new XMLHttpRequest();
     }else if(window.ActiveXObject){ 
     try{
      xhr = new ActiveObject("Msxml12.XMLHTTP");
     
     }catch(e){
      try{
       xhr = new ActiveXObject("Microsoft.XMLHTTP");
       
      }catch(e){
       xhr = false;
       }
      }
     }
     return xhr;
   }
   function grabFile(file){
    myxhr = getHttpObject(); 
    if(myxhr){
     myxhr.onreadystatechange = function(){
      displayResponse(myxhr);
     };         //指定一个回调函数,处理从服务器返回的结果.
    url = file;
     myxhr.open("GET",url,true);  //准备发送,,true表示同步处理
     myxhr.send(null);  //发送请求
    }
    function displayResponse(myxhr){
     
     if(myxhr.readyState == 4){
    //  alert(myxhr.status);
      if(myxhr.status == 200 || myxhr.status == 304){
      // alert(myxhr.responseText);
       var a = myxhr.responseText;  //从ajax引擎中取出结果
       var b = document.getElementById("ues").value;
       if( a==b){
        //alert("名字重复");
        document.getElementById("xxx").innerHTML = "<font color='red'>重复!</font>";
        }else{
         //alert('名字不重复');
         document.getElementById("xxx").innerHTML = "<font color='red'>不重复!!</font>";
        }
      }
     }
    }
   }
  </script>
  <title> test ajax </title>
 
 
</head>
 <body>
    <form action="" method="post" >
    <input type="text" name="t" id="ues">
    <input type="button" value="ok" onclick="grabFile('test.txt');">  //选择 button , 使用 submit 会失效
    <span id="xxx"></span>
 </body>
</html>


 

test.txt 内容:

aaa

以上代码放在服务器里跑(比如:Apache,Tomcat)

你可能感兴趣的:(21天学通Java学习笔记-Day13(javascript-ajax))