`
农村哥们
  • 浏览: 287588 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

XMLHttpRequest

阅读更多
通过不刷新页面进行服务器请求,同时返回结果为当前页面使用。
例如在页面中js中这样写

    <script language="Javascript">    
        
     var http_request=false;    
        
     function send_request(url){//初始化,指定处理函数,发送请求的函数    
        http_request=false;    
        //开始初始化XmlHttpRequest对象    
        if(window.XmlHttpRequest){//Mozilla浏览器    
            http_request=new XmlHttpRequest();    
            if(http_request.overrideMimeType){//设置MIME类型    
                http_request.overrideMimeType("text/html");    
            }    
            }else if(window.ActiveXObject){//IE浏览器    
                try{    
                    http_request=new ActiveXObject("XsXml2.XmlHTTP");    
                    http_request.setRequestHeader("Content-Type","text/Xml");    
                    http_request.setRequestHeader("Content-Type","gb2312");    
                }catch(e){    
                    try{    
                        http_request=new ActiveXObject("Microsoft.XmlHTTP");    
                        http_request.setRequestHeader("Content-Type","text/Xml");    
                        http_request.setRequestHeader("Content-Type","gb2312");    
                    }catch(e){    
                    }    
             }    
        }    
        if(!http_request){ //异常,创建对象实例失败    
            window.alert("不能创建XmlHttpRequest对象实例");    
            return false;    
        }    
		//设置回调函数
        http_request.onreadystatechange=processRequest;    
        //确定发送请求的方式和URL以及是否同步执行下段代码    
        http_request.open("POST",url,true);    
        http_request.setRequestHeader("If-Modified-Since","0");//不要缓存   
        http_request.send(null);    
    }    
//处理返回信息的函数    
    function processRequest(){   
        if(http_request.readyState==4){    
         //判断对象状态    
            if(http_request.status==200){//信息已经成功返回,开始处理信息    
            var result = http_request.responseXML;   
        //获得xml格式的返回数据,可看后台XMLHttpRequestAction.java 处理数据
                var rValue = result.getElementsByTagName("r");   
                
				document.getElementById("userLIST").options.length=0;
         //把获得的数据动态生成下拉列表
                for (var i = 0; i < rValue.length; i++) 
				{
					[color=red]var name = rValue[i].firstChild.nodeValue;[/color]
					var newOption = document.createElement("option");
					newOption.innerHTML = name;
					document.getElementById("userLIST").appendChild(newOption);
				}
                
            }else{//页面不正常    
                alert("您所请求的页面有异常");    
            }    
            
        }    
  }     
       
       
    function getResult(url){   
           //首先把url作为参数传入,通过struts-config调用action
            send_request(url);   
    }
    
    
    function selectVersion() 
	{
		var select = document.getElementById("userLIST");
               //从下拉列表中取出选中项
		document.getElementById("r").value = select.options[select.selectedIndex].text;
	}
       
	</script> 


XMLHttpRequestAction.java
package com.start.struts.action;

import java.io.PrintStream;
import java.io.PrintWriter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.start.struts.form.JumpForm;

public class XMLHttpRequestAction extends Action {
	
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		try {
               //进入后台后,通过response写返回数据
		PrintWriter out = response.getWriter();
               //xml数据格式
		out.println("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>");   
        out.println("<root>");   
        out.println("<r> r1 </r>");
        out.println("<r> r2 </r>");
        out.println("</root>");   
        response.setContentType("text/xml"); 
		} catch (Exception e) {
			
		}
		return null;
	}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics