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