struts2中Ajax的操作实现及其核心对象XMLHttpRequest对象的使用

在一个网页文件中可以采用如下的XMLHttpRequest对象的写法实现Ajax的异步操作

function getValueFromServer()
		{
			var xmlHttpRequest = null; 
			
			if(window.ActiveXObject)
			{
				//如果是通过microsoft的activeXObject实现的
				xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP"); 
				
			}
			else if(window.XMLHttpRequest)
			{
				//如果是通过Firefox和Chrome实现的。
				xmlHttpRequest = new XMLHttpRequest();
			}
			if(null != xmlHttpRequest)
			{
				//方法里的true代表是异步的方式,而false是同步的方式 发送GET请求, "MyServlet"表示的是请求的相对url
				xmlHttpRequest.open("GET","addAction" + "?value1=" + value1 +  "&value2=" + value2,true);
				
				xmlHttpRequest.onreadystatechange = ajaxCallBack;
				/*
				如果发送的请求是GET类型的,参数赋值null
				如果有请求参数在xmlHttpRequest.open("GET","MyServlet",true)中的"MyServlet"中添加,形式如"MyServlet?username=hello&password=world"
				如果是POST的类型的参数以名值对的形式卸载send()方法里面
				*/
				xmlHttpRequest.send(null);
			}
			
			
			
			
			function ajaxCallBack()
			{
				if(xmlHttpRequest.readyState == 4)
				{
					//http请求是正确的(200)
					if(xmlHttpRequest.status == 200)
					{
						//请求的数据格式为普通文本。
						var responseText = xmlHttpRequest.responseText;
						
						document.getElementById("div1").innerHTML = responseText;
					}
				}
			}
		}
至于服务器端可以采取如下的代码去配合(如果使用的是struts2的话)


ServletResponse httpServletResponse = ServletActionContext.getResponse();
		
		PrintWriter printWriter = null ;
		
		try
		{
			 printWriter = httpServletResponse.getWriter();
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}

可以通过PrintWriter类的对象产生一个信号,回传给客户端。在之前的javascript的脚本段中定义的那个回调函数里有一个xmlHttpRequest.responseText; 标示回传的是一个普通的文本的格式而不是一个xml格式也不是一个json数据格式的。并且里面放的值就是PrintWriter对象所返回的数据。

function ajaxCallBack()
            {
                if(xmlHttpRequest.readyState == 4)
                {
                    //http请求是正确的(200)
                    if(xmlHttpRequest.status == 200)
                    {
                        //请求的数据格式为普通文本。
                        var responseText = xmlHttpRequest.responseText;
                        
                        document.getElementById("div1").innerHTML = responseText;
                    }
                }
            }



如果是servlet的话直接就是

PrintWriter printWriter = resp.getWriter(); //res为HttpServletRequest对象


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。