zoukankan      html  css  js  c++  java
  • JavaScript实现Ajax小结

    JavaScript实现Ajax小结

    Ajax大家应该都很熟悉,在此总结一下备忘。

    至于Ajax的优点就不多说了,实现动态刷新,提升用户体验,缺点也还不少,比如破坏了浏览器的back功能,同一个URL打开的界面并不是完全相同,还有安全性能等方面,但是这些也阻挡不了我们使用Ajax的脚步~~~

    这里以表单为例说一下实现Ajax的步骤:

    1. 先从表单中获取我们需要的数据
    2. 然后建立相应的URL
    3. 设置onreadystatechange函数
    4. 打开连接
    5. 发送请求

    以上就是Ajax的实现步骤,接下来简单分步总结下。

    首先是关于xrh对象的建立。

    function creatXhr(){
    	var xhr=null;
    	if(window.XMLHttpRequest){
    		xhr=new XMLHttpRequest();
    	}else{
    		xhr=new ActiveXObject("Microsoft.xhr");
    	}
    }

    稍完整的可以这样写:

    function creatXhr(){
    	var xhr=null;
    	try{
    	  xhr=new ActiveXObject("Msxml2.XMLHTTP");
    	}catch (e){
    	  try {
    	    xhr=new ActiveXObject("Microsoft.XMLHTTP");
    	  }catch (e2){
    	    xhr=false;
    	  }
    	}
    	if(!xmlHttp && typeof XMLHttpRequest != 'undefined') {
    	  xhr=new XMLHttpRequest();
    	}
    }

    以上对ie和非ie浏览器多做了兼容处理。

    然后就该发送Ajax请求了,下面以一个表单项country为例:

    function callReqest(){
    	var country=document.getElementById('country').value;
    	if((country==null)||(country==''))
    		return;
    	var url='example.php?country='+encodeURIComponent(country);
    	xhr.onreadystatechange=update;
    	xhr.open('GET',url,true);
    	xhr.send(null);
    }

    以上获取了一个country表单项,onreadystatechange函数是readystate发生变化时触发的事件,可以以此来判断是否需要发生动作。

    onreadystatechange函数如下:

    function onreadystatechange(){
    	if((xhr.onreadystatechange==4)&&((xhr.state==200)||((xhr.state>200)&&(xhr.state<300)))){
    		document.getElementById('countryCode').value=xhr.responseText;
    	}
    }

    onreadystatechange等于4的时候,说明资源已然完全下载到客户端了,可以使用了,同时查看状态码,在200到300之间,左闭右开,即可进行刷新,这里只是简单的将responseText给了一个表单项,当然也可以返回XML等相关数据,相关内容可查看其他相关介绍。

    最后,至于触发Ajax,可以在表单的country里面添加onChange事件,这样用户在输入表单时就会触发Ajax了。

  • 相关阅读:
    沙盒配置好的测试
    云端存储的实现:云存储1
    演职人员名单MobileMenuList
    关于GitHub的朋友的NE Game
    到了冲刺阶段
    云存储的配置3
    刚才花了1$赞助了那位伙计
    我知道这对自己是个积累的过程,很好,我成长的很快
    煎熬过后终于有一刻释怀
    空白不曾停止。。。
  • 原文地址:https://www.cnblogs.com/dengchangliang/p/4865608.html
Copyright © 2011-2022 走看看