如何使用Ajax进行与服务器交互

@如何使用Ajax

如何使用Ajax进行与服务器交互

AJAX全称为“Asynchronous [ei’siŋkrənəs] JavaScript and XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。

注意:Ajax的主要目的:1、局部刷新 2、异步通信
Ajax的技术特点:异步通信、局部刷新

Ajax执行的五个步骤

1.创建XMLHttpRequest对象
XMLHttpRequest 类首先由Internet Explorer以ActiveX对象引入,被称为XMLHTTP。 后来Mozilla﹑Netscape﹑Safari 和其他浏览器也提供了XMLHttpRequest类,不过它们创
建XHMLHttpRequest对象的方法不相同

/**
创建XMLHttpRequest对象
*/
function createXMLHttpRequest()
{
    
    
	var xhr;//声明变量用于装XMLHttpRequest对象
	//创建XMLHttpRequest对象

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

2.设置与服务器端的连接信息
ajax在与服务器连接,有两种方式 一种时GET 一种是POST。两者的区别如下
1、GET方式只能通过访问路径 +?参数=值 (url?name1=value1&name1=value1)
POST方式可以通过send方法,即在项目服务器发送请求时,将信息以send函数参数的方式传递给服务器
2、GET方式不用设置请求的头信息(因为get走地址栏)
POST方式必须设置请求的头信息(因为post走底层的HTTP协议)

 xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

Get方式建立连接

/*
	 * 建立连接
	 *  xhr.open(method,url,asyn);
	 *  method:提交方式
	 *  url:提交路径
	 *  asyn:是否采用异步通信
	 */
	
	xhr.open("GET","/struts_crud_hr/ajaxAction!ceshiAjax.action?datetemp="+new Date().getTime().toString()+"&userid=yxd&userpass=12345",true);
//发送请求,因为 get方式不通过send方式传递参数所以参数为null
xhr.send(null);

Post方式建立连接

/*
	 * 建立连接
	 *  xhr.open(method,url,asyn);
	 *  method:提交方式
	 *  url:提交路径
	 *  asyn:是否采用异步通信
	 */
	xhr.open("POST","/struts_crud_hr/ajaxAction!ceshiAjax.action?datetemp="+new Date().getTime().toString(),true);
	//如果请求类型是POST方式的话,需要设置请求首部信息
	xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	/*
	 * 发送参数
	 如果请求类型是GET方式的话,客户端发送请求数据,服务器端接受不到
	 虽然get方式下,send方法不起作用,但是不能省略
	 */
	xhr.send("userid=yxd&userpass=12345");//发送数据

3.向服务器发送数据

/*
	 * 发送参数
	 如果请求类型是GET方式的话,客户端发送请求数据,服务器端接受不到
	 虽然get方式下,send方法不起作用,但是不能省略
	 */
	xhr.send("userid=yxd&userpass=12345");

4.设置回调函数
在XMLHttpRequest对象有一个事件,当客户端与服务器端的交互状态发生改变时触发。这是事件叫做onreadystatechange。用于处理这个事件的函数称为回调函数

	xhr.onreadystatechange = function(){
    
    //为onreadystatechange事件设置回调函数
		
		if(xhr.readyState==4){
    
    
			if(xhr.status==200){
    
    
				//得到服务器的返回值
				var data = xhr.responseText;
				alert(data);
			}
		}
	}

5.接收服务器的响应数据
XMLHttpRequest对象有个 readyState属性,用于获得请求状态和响应状态

readyState 属性表示 Ajax请求的当前状态.它的值用数字代表
0代表未初始化.还没有调用open方法
1表正在加载代.open方法已被调用,但send方法还没有调用
2代表已加载完毕.send已被调用.请求已经开始
3.代表交互中。服务器正在发送响应
4.代表完成。响应发送完毕
status:表示服务器对客户响应的状态码:判断交互是否成功
常用状态码及其含义:
.404 没找到页面(not fount)
.403禁止访问
.500内部服务器出现错误
.200 一切正常。

xhr.onreadystatechange = function(){
    
    
		
		if(xhr.readyState==4){
    
    
			if(xhr.status==200){
    
    
				//得到服务器的返回值
				var data = xhr.responseText;//利用xhr.responseText返回的文本信息
				alert(data);
			}
		}
	}

裸Ajax的使用

/**
	测试返回值是一个Map的情况
	*/
  	function fun2()
  	{
    
    
		//设置请求提交的路径
		var url="${pageContext.request.contextPath }/ajax/luoAjax2.do";
		//设置参数
		var paramstr="deptno=10";
		//第三个参数指明的回调函数的名字
		AjaxResponseText(url,paramstr,callback2) ;//callback2为回调函数名
  	}

  	function callback2(returnValue)
  	{
    
    
  	  	// alert(returnValue);
		//将接到的字符串 转为JS中的json对象
		var json = eval("("+returnValue+")");//注意!!:如果返回的Map一定要在转为JSON对象时,外层加括号
		//从json中得到结果
		alert("得到的部门名为:"+json.DNAME+" 得到部门地址为:"+json.LOC);
		
  	}

JQuery中的Ajax使用

/**
    fun1:利用Ajax返回一个字符串
    */
  	function fun1()
  	{
    
    
		 jQuery.ajax( 
		            {
    
     
		            type: "POST", //传值方式 
		            url: "${pageContext.request.contextPath }/jquery/jqueryAjax1.do", //访问路径 
		            dataType: "text", // text:文本 xml:xml文档 
		            async:true, //设为异步 
		            data:"userid=yxd&userpass=123", //传值串或json {“userid”:”yxd”,”userpass”:”123”}
		            // 回调方法 
		            success: callback1
		   
		        }); 
  	}
	/**
	fun1的回调函数
	*/
  	function callback1(returnValue)
  	{
    
    
		alert("返回值为:"+returnValue);
  	}
 

猜你喜欢

转载自blog.csdn.net/zhx__/article/details/107885644
今日推荐