Ajax和Jquery学习总结(1)

说到Ajax(Asynchronous JavaScript and Xml)可以说的是它是一项非常优秀的综合技术,它可以完成客户端的异步请求,这里要理解同步和异步请求。

同步是指:发送方发出数据后,等接收方发回响应以后才发下一个 数据包的通讯方式。 

异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。

易懂的理解: 异步传输:   你传输吧,我去做我的事了,传输完了告诉我一声   同步传输:  你现在传输,我要亲眼看你传输完成,才去做别的事

它的核心是XmlHttpRequest对象,首先应该创建一个Ajax对象:

/**
 * AJAX建立和服务器的连接,接收服务器的请求,处理服务器返回的数据
 * 开发步骤:
 *   1.创建XMLHttpRequest对象
 *   2.接收服务器端的响应
 *   3.打开和服务器的链接
 *   4.发送数据
 *  
 */

function ajaxFunction(){
   var xmlHttp;
   try{ // Firefox, Opera 8.0+, Safari
        xmlHttp=new XMLHttpRequest();
    }
    catch (e){
	   try{// Internet Explorer
	         xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
	      }
	    catch (e){
	      try{
	         xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
	      }
	      catch (e){}
	      }
    }
	return xmlHttp;
 }

//浏览器加载时就创建这个函数
window.οnlοad=function (){
  //<input type="button" value="测试服务器连接" id="ok" name="ok"/>
  
  	document.getElementById("ok").οnclick=function (){
		//alert("hello!");
		
		//1 创建XmlHttpRequest对象
		var xmlHttp=ajaxFunction();
		
		
		/**
		 * 2.接收服务器的响应
		 *  * onreadystatechange事件处理函数由服务器触发,而不是用户
              * 在 Ajax 执行过程中,服务器会通知客户端当前的通信状态。通信状态的改变要激发函数的执行
              * 
              * 
              * readyState 属性表示Ajax请求的当前状态。它的值用数字代表。
					0 代表未初始化。 还没有调用 open 方法
					1 代表正在加载。 open 方法已被调用,但 send 方法还没有被调用
					2 代表已加载完毕。send 已被调用。请求已经开始
					3 代表交互中。服务器正在发送响应
					4 代表完成。响应发送完毕
		 */
		xmlHttp.onreadystatechange=function (){
			//alert("xxxxxxxxx");
			//当请求结束时每个浏览器会把readyState值置为4
			
			//响应发送完毕
			 if(xmlHttp.readyState==4){
			 	if(xmlHttp.status==200||xmlHttp.status==304){
					//接收服务器端返回的数据
					var data=xmlHttp.responseText;
					alert(data);
				}
			 }
			 
		}
		
		
		
		/**
		 * 3打开和服务器的连接
		 */
		//	alert("haha!");
		xmlHttp.open("post",
		"/JsProject/TestServlet?timeStamp="+new Date().getTime()+"&a=9",true);
	
	   /*
		 * 如果请求方法是post,需要设置Content-Type的类型
		 *  * 该方法必须放置在open方法的后面
		 */   
		xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");  
		
		/**
		 * 4.向服务器发送数据
		 *  发送数据到服务器端
		 *   * 如果请求方法是get,此时send方法不能发送数据到服务器端
		 *     即使发送了数据,服务器端也接收不到,该参数设置null
		 *   * 此时传递参数可以使用url方式传递参数  
		 */
		//xmlHttp.send(null);//get方法不想服务器发送数据,所以为空
		
		xmlHttp.send("b=80&c=name");
		
		
	}
	
}

对于JQuery它则封装了很多JS的类库真正实现用更少的代码,做更多的事。使用JQuery与服务器端交互的代码如下:

  $(document).ready(function(){
	 	 $("#b1").click(function(){
			/*
			 * $("#one").load("load01.jsp",xxx,function(data,textStatus,xmlHttpRequest){});
			 *  * 载入远程HTML文件代码并插入至DOM中。
			 *  * 该方法不是jquery的全部函数,所以必须用对象调用
			 *  * 参数1:请求的url
			 *  * 参数2:发送到服务器的数据,格式:{key01:value01,key02:vlaue02}
			 *  * 参数3:回调函数function(data,textStatus,xmlHttpRequest)
			 *        * data:代表请求返回内容的 data,服务器端返回的内容
			 *        * textStatus:代表请求状态的 textStatus 对象,其值可能为: succuss, error, notmodify, timeout 4 种
			 *        * xmlHttpRequest对象
			 *        
			 *  * 如果没有向服务器传递参数:则此时的请求方法是get
			 *  * 如果向服务器传递参数:则此时的请求方法是post
			 *  
			 */
			var jsonObj={
				username:$("#username").val(),
				psw:$("#psw").val()//psw:&("#psw").val()
			}
			
			//$("#one").load("load01.jsp",jsonObj,function(data,textStatus,xmlHttpRequest){
			$("#one").load("load01.jsp h2",jsonObj,function(data,textStatus,xmlHttpRequest){
				// alert(data);
				alert(xmlHttpRequest.readyState+" "+xmlHttpRequest.status);
			});
			
		 });
	 }); 

同样的Jquery中提供了类似Ajax中post和get请求的方法:

 $().ready(function(){
//   	  $("#b1").click(function(){
//		 /*
//		  *  $.get("get.jsp",function(data,textStatus){});
//		  *    * 通过远程 HTTP GET 请求载入信息。
//		  *    * 参数1:请求的url
//		  *    * 参数2:发送到服务器的数据.格式:{key01:vlaue01,key02:vlaue02}
//		  *    * 回调函数:function(data,textStatus)
//		  *          * data:服务器返回的数据
//		  *          * textStatus:代表请求状态, 其值可能为: succuss, error, notmodify, timeout 4 种.
//		  *    * 方法的返回值是xmlHttpRequest对象
//		  */
//		 var jsonObj={
//		 	username:$("#username").val(),
//			psw:$("#psw").val()
//		 }
//		 
//     var xmlHttp=  $.get("get.jsp",jsonObj,function(data,textStatus){
//             //alert(data);    
//          alert(textStatus);        
//		   	 $("#one").text(data);		
//		 });	  	
//	  });
 /*alert(xmlHttp.readyState);
 * alert(xmlHttp.status);
 */



  $("#b1").click(function(){
		 /*
		  *  $.post("get.jsp",function(data,textStatus){});
		  *    * 通过远程 HTTP post 请求载入信息。
		  *    * 参数1:请求的url
		  *    * 参数2:发送到服务器的数据.格式:{key01:vlaue01,key02:vlaue02}
		  *    * 回调函数:function(data,textStatus)
		  *          * data:服务器返回的数据
		  *          * textStatus:代表请求状态, 其值可能为: succuss, error, notmodify, timeout 4 种.
		  *    * 方法的返回值是xmlHttpRequest对象
		  */
//		 var jsonObj={
//		 	username:$("#username").val(),
//			psw:$("#psw").val()
//		 }
//		 
		  var jsonObj=$("#form1").serialize();//serialize 连续的,连载  ----序列化
		 
         $.post("get.jsp",jsonObj,function(data,textStatus){
             //alert(data);           
		   	 $("#one").text(data);		
		 });	  	
	  });
   });		




  

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值