我用ajax实现了一个定时跳转的功能,是跳到action中,再执行action中的代码(代码中写了几个if判断),但是在action用return mapping.findForward("aa")(aa是配置到了另一个页面)跳转确不好用(通过调试,这句话也走了),但是根本就返回不到指定的页面,struts-config.xml配置的也没有问题啊,我也不知道是怎么回事,看似没问题的代码,弄了好多天了,请各位帮帮忙,帮我分析一下,谢谢了。 
代码如下:
var XMLHttpReq; function createXMLHttpRequest() 

if(window.XMLHttpRequest) 
{ XMLHttpReq = new XMLHttpRequest(); 

else if(window.ActiveXObject) 

try 

XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP"); 

catch(e) 

try 

XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); 

catch(e) 
{} 


} function sendRequest() 

createXMLHttpRequest(); 
var errcode = document.getElementById("code").value; 
var url = "confirmorderinfo.do?method=add"; 
XMLHttpReq.open("post", url, true); 
XMLHttpReq.send(null); 
} window.onload = function() 

setTimeout('sendRequest()',2000); 
}

解决方案 »

  1.   

    你写的着是什么啊?
    页面事件出发getCourseData(element)方法,看看这个例子吧
    var xmlHttp;
    function createXMLHttpRequest(){
    if(window.ActiveXObject){
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    //alert("ok");
    }
    else if(window.XMLHttpRequest){
    xmlHttp = new XMLHttpRequest();
    }
    }
    function getCourseData(element){
    createXMLHttpRequest();
    var url = "ToolTipServlet";
    xmlHttp.open("GET",url,true);
    xmlHttp.onreadystatechange = callback;
    xmlHttp.send(null);
    }
    function callback(){
    if(xmlHttp.readyState == 4){
    if(xmlHttp.status == 200){
    //alert(courseData.getElementsByTagName("length")[0]);
    setData(xmlHttp.responseXML);//显示处理信息的方法
    }
    }
    }
      

  2.   

    我的意思是从ajax跳到action中,但是action的return 要跳转到其它页面的
      

  3.   

    action里面你只有return null就可以了,其他可以不用改和servlet一样
      

  4.   

    把你想返回的值放入response对象中
    然后return null就可以了
    比如
    response.setContentType("text/xml");
    response.setHeader("Cache-Control", "no-cache");
    response.setHeader("Content-Type", "text/xml; charset=gb2312");
    PrintWriter pw = response.getWriter();
    pw.write(“需要返回的值!”);
    pw.close();
    return null;
      

  5.   

    都用div来做,放在一个页面里面
      

  6.   

    一般ACTION我们都是返回NULL,你可以在AJAX回调的方法里写你的跳转,因为AJAX是局部刷新,在ACTION里对你原来的页面根本就没有影响,你用response.getWriter方法写你要传的值,然后在回调函数里接收这些信息也可以完成这个功能吧
    这是个人见解,希望不要误导你,呵呵
      

  7.   

    6楼和8楼结合起来就是我要的答案了,呵呵,所以个给了一点分数。
    要说名的是:在action中的return mapping.findForward("a")这段代码根本就一点用都没有,还给我造成了很大的误解。在action加一个response.getWriter().write(info);再在ajax中加一个回调函数接收一下值,就解决了,谢谢各位的帮忙!
      

  8.   

    lz你要从ajax跳转到action没有问题得话,你还想问什么那?你用ajax本来就不会跳转到指定得页面而是会在本页中作出提示,这才叫异步传输
    如果你用的是xmlhttprequest.responseXML你action指定得页面里必须是一个xml
    如果你用的是xmlhttprequest.responseText你action指定得页面里可以是一个有输出信息得简单的html或jsp
      

  9.   

    给点分吧,我都说这么多了,我还没被人给过分那,郁闷ing
      

  10.   

    http://blog.csdn.net/rikuseiha/archive/2007/11/19/1893129.aspx
    有点小小的分析,希望能帮助你
      

  11.   

    a.do中:
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    {
        if(0==0)
        {
          response.getWriter().write("要显示在页面上的信息");//此时可以在回调函数中判断:
        }
         return null;  //这里必须返回null,如果想跳转到其他页面似乎是不可能的
    }ajax.jsp中是这样写的:
    function createRequest()
    {
    if(window.ActiveXObject)
    {
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    else if(window.XMLHttpRequest)
    {
    xmlhttp=new XMLHttpRequest();
    }
    } function dogetName(url)
    {
    createRequest();

    xmlhttp.onreadystatechange=getNameCall;
    xmlhttp.open("GET",url,true);
    xmlhttp.send(null);
    } function go()
    {
    var url="a.do";//这里写你要跳转到的路径
    dogetName(url);
    } function getNameCall()
    {
    if(xmlhttp.readyState==1)
    {
    document.getElementById("info").innerHTML ="<div id='ff'>系统正在处理中,请稍候...</div>";
    }
    if(xmlhttp.readyState==4)
    {
    if(xmlhttp.status==200)
    {
    setJump();
    }
    }
    }
    window.onload = function() 
    {   
        setTimeout('go()',1000);//定时器 自动执行


    function setJump(){
    document.getElementById('ff').innerHTML="<table id='gameli' style='margin-top:5px;' width='180'  border='0' cellpadding='0' cellspacing='0'";
    var text =xmlhttp.responseText;//接收传回来的值
    }
    }

           </script>
    应该差不多了  不明白再问吧