Java绿地(~ming~)

Java 草地

常用链接

统计

最新评论

Ajax基础

 

Ajax基础

.Ajax的关键技术:

1.使用XHTML(HTML)CSS构建标准化的展示层

2.使用DOM进行动态显示和交互

3.使用XMLXSLT进行数据交换和操纵

4.使用XMLHttpRequest异步获取数据

5.使用JavaScript将所有元素绑定在一起

.javascript语法(是一种弱类型的解释型的语言)

1.基础语法:

<script type="text/javascript">   function init(){

     var age=22;       //语句可以加”;”,也可以不加,但是好的编程习惯最好加

     alert("age"+age+","+typeof age);

/*数据类型:1.未定义(Undefined),变量未定义;2.空(Null),变量未初始化

3.字符串(String),可以放在单引号或双引号中;4.数值(Number),可以表示整数、浮点数

5.布尔型(Boolean),truefalse;6.对象(Object  */

     var color=new Array();   /* 也可以是  var cloor=[];  */

     color[0]="hello";   color[1]=12;

     for(var i=0;i<color.length;i++){   alert(color[i]);   }  //任何的类型最好用var

   }

  window.onload=init; </script>  //等待所有的页面元素都加载再load javascript


2.
函数:函数也是对象

<script type="text/javascript">

   function  Person(){   this.age=22;    this.name="name"; //this绑定以后才能调用到

       this.sayHello=function(){   alert("world  "+this.name); }}  //内部方法的定义

   var person=new Person();  //创建对象实例

   person.sayHello(); alert(person.age); window.onload=person.sayHello();</script>



.DOM基础:Document Object Model

1.类型:元素节点,属性节点,文本节点

2.基本的DOM方法:

  实例: <body><h1>hello h1</h1>       //为了跨浏览器节点写在一起

        <form id="form" action=""

            ><input id="txt1" type="text" name="text1" value="123"

            ></form>    </body>

 Javascript: function dom(){

  var txt1=document.getElementById("txt1");  alert(typeof txt1);   //返回值为对象

  var inputs=document.getElementsByTagName("input");alert("len= "+inputs.length);

   for(var i=0;i<inputs.length;i++){  var value=inputs[i].getAttribute("value");

   var val=inputs[i].setAttribute("value","145");   }  }

3.重要DOM属性;

function node(){  var form=document.getElementById("form");

  var firstChild= form.firstChild.getAttribute("value"); alert("first="+firstChild);

  var lastChild= form.lastChild.getAttribute("value"); alert("last="+lastChild);

  var sibling= form.firstChild.nextSibling.getAttribute("value");

  alert("parentNode type="+form.parentNode.nodeType);

/* nodeTpye属性用来区分节点的类型,元素为1,属性为2,文本节点是3  */

  alert(form.parentNode.childNodes[0].nodeValue);} /* nodeValue只对文本节点有效 */

 

4.改变网页结构的DOM方法:实例(改变页面的显示图片)

  Html:

<body>   <h1 align="center"> Welcome to the DOM Magic Shop!</h1>

     <form name="magic-hat">

       <p align="center">

         <img id="topHat" src="topHat.gif" />       <br />

         <input id="bt" type="button" value="Hocus!" onClick="showRabbit()"/></p>

        </form> </body>

简便的方法一:

  <script type="text/javascript">

      function showRabbit(){   var topHat=document.getElementById("topHat");

        topHat.setAttribute("src","rabbit-hat.gif");

         var button=document.getElementById("bt");  

     button.setAttribute("value","back"); button.onclick=hiddenRabbit;  }

function hiddenRabbit(){   var topHat=document.getElementById("topHat");

       topHat.setAttribute("src","topHat.gif");

       var button=document.getElementById("bt");

       button.setAttribute("value","Hocus!");  button.onclick=showRabbit;    }

    </script>    //javascript方法的转换

复杂的方法二:

function showRabbit(){

    var topHat=document.getElementById("topHat");

    var newImage =document.createElement("img");

        newImage.setAttribute("src","rabbit-hat.gif");

    var imgParent=topHat.parentNode;

        imgParent.insertBefore(newImage,topHat);

        imgParent.removeChild(topHat);

    var button=document.getElementById("bt");  

        button.setAttribute("value","back");

        button.onclick=hiddenRabbit;    }

appendChild(node):把新建的节点插入到节点树的最后节点下,成为这个节点的子节点

createTextNode(text):创建文本节点

 

四.使用Ajax发送异步请求  XMLHttpRequest

1Html:<body>  <table align="center">      <h2>enter location data</h2>

    <tr>     <th align="left">zipcode:</th>

     <td><input id="zipcode" type="text" name="zipcode" onblur="processZipData()"> </td> </tr>                                        //鼠标离开时调用的函数

    <tr> <th align="left">city:</th>

        <td><input id="city" type="text" name="city"></td>  </tr>

    <tr>  <th align="left">province:</th>

      <td><input id="province" type="text" name="province"></td></tr> </table></body>

2Javascript: <script type="text/javascript">

  var request=false;

  function createRequest(){  //创建跨浏览器的XMLHttpRequest

    try{   request=new XMLHttpRequest();

    }catch(e){  try{   request=new ActiveXObject("Msxm12.XMLHTTP");

    }catch(e1){  try{  request=new ActiveXObject("Microsoft.XMLHTTP");

     }catch(e2){  request=false;  }   } }  if(!request)alert("error");  }

  function processZipData(){    createRequest();

    var zipcode=document.getElementById("zipcode").value;

    var url="zipcode.jsp?zipcode="+escape(zipcode);//转义不能用明文正确发送任何字符

    request.open("GET",url,true);  //建立到服务器的新请求

    request.onreadystatechange=updatePage;//服务器完成请求后,然后调用指定任何方法

    request.send(null);  }    //向服务器发送请求

  function updatePage(){

     if(request.readyState==4){  if(request.status==200){

         var response=request.responseText.split(",");  用,号分割成对象数组

         document.getElementById("city").value=response[0];

         document.getElementById("province").value=response[1];

       }  }   }  </script>

 

3.服务器端测试代码:<%Map<String,String> datas=new HashMap<String,String>();

 datas.put("123","Hefei,Anhui");

String zipcode=request.getParameter("zipcode");String data=datas.get(zipcode);

if(data==null){data="error,error";}out.print(data);   %>



五:在请求和响应中使用XML

1.修改的javascript: function updatePage(){

     if(request.readyState==4){       if(request.status==200){

         var response= request.responseXML;   

         var city=response.getElementsByTagName("city")[0].firstChild.nodeValue;

    var province=response.getElementsByTagName("province")[0].firstChild.nodeValue;

         document.getElementById("city").value=city;

         document.getElementById("province").value=province;      }   }   }

XMLHttpRequest对象提供了一个属性responseXML,它能以DOM Document的形式获取服务器的XML响应

2.修改的服务器代码:<%

  Map<String,String> datas=new HashMap<String,String>();

  String location1="<location>"+"<city>Hefei</city>"+"<province>Anhui</province>"

                       +"</location>";

  String error="<location>"+"<city>error</city>"+"<province>errors</province>"

                       +"</location>";

  datas.put("123",location1);  String zipcode=request.getParameter("zipcode");

  String data=datas.get(zipcode);  if(data==null){  data=error;  }

  response.setContentType("text/xml;charset=UTF-8");  out.print(data);%>

  //需要增加的返回的代码格式

 

六.使用JSON进行数据传输

1JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。它是基于JavaScript 的。

2Javascript:

function updatePage(){ // eval()函数将来源输入无条件地视为表达式进行解析,返回对象

     if(request.readyState==4){       if(request.status==200){

         var response=eval("("+request.responseText+")");

         document.getElementById("city").value=response.city;

         document.getElementById("province").value=response.province;

       }     }   }

3.服务器端:<%Map<String,String>datas=new HashMap<String,String>();

  String location1="{'city':'hefei','province':'anhui'}";

  String error="{'city':'error','province':'error'}";

  datas.put("123",location1);  String zipcode=request.getParameter("zipcode");

  String data=datas.get(zipcode);

  if(data==null){    data=error;  }  out.print(data);  %>

 

JSON数据赋值给变量:

var company = { employees": [

  { "firstName": "Brett", "lastName":"McLaughlin", "email": brett@newInstance.com" },

  { "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },

]}

 

posted on 2007-09-20 00:59 mrklmxy 阅读(441) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: