晕,问题找到了
这一句
xmlHttp.send("title="+escape(title)+"&author="+excape(author)+"&content="+escape(content));
把escape写成excape了,改完后提交成功,还有个问题,提交后他提示几个“触发onreadystatechange的事件不是4”后,显示提交成功,ACTION中的打印参数代码起作用了,但是没有实现mapping.findForward()跳转,为啥?

解决方案 »

  1.   

    跟一下看看是不是真的提交到msg了啊
      

  2.   

    不是提交给msg,我是提交给了一个已经映射了的ACTION【代码如下】
    package com.struts.action;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.struts.form.SubmitForm;/**
     * @author User
     *
     */
    public class SubmitAction extends Action
    {
    public ActionForward execute(ActionMapping mapping,
    ActionForm form,
    HttpServletRequest request,
    HttpServletResponse response)
    {
    //接收参数
    SubmitForm submitForm = (SubmitForm)form;
    String title = submitForm.getTitle();
    String author = submitForm.getAuthor();
    String content = submitForm.getContent();
    System.out.println("ajax异步提交成功");
    System.out.println(title);
    System.out.println(author);
    System.out.println(content);
    return mapping.findForward("msg");
    }
    }
    其中打印语句已经成功的将参数打印在ECLIPSE的控制台上了,但是最后一句return mapping.findForward("msg");没有跳转,但是如果不加AJAX代码的话,就可以实现跳转
      

  3.   

    补充再问,异步提交的返回结果是不是只能返回给提交页面本身。如果不是,我做跳转后怎样还能收到这个提交结果?如果我不是提交给一个STRUTS的action,而是提交给一个SERVLET,这个SERVLET在WEB.XML中已做映射,那么原地等待的这个页面是否也可以收到响应结果
      

  4.   

    xmlHttp.send("title="+escape(title)+"&author="+excape(author)+"&content="+escape(content));send中的那些数据(key=value)不能通过request.getParameter来获得的,除非你把querystring写到url中去,这样struts才可以通过request.getParameter来给formbean的属性赋值.
      

  5.   

    楼上,事实上我的action并没有通过request.getParameter来得到参数,而是通过
    SubmitForm submitForm = (SubmitForm)form;
    String title = submitForm.getTitle();
    这样的语句来得到参数,问题在于,我已经成功得到了参数值并打印在控制台上了。
    也就是说,action中execute方法的打印语句已经执行,但是紧接着的mapping.findForward()却没有得到执行。
      

  6.   

    用AJAX是无刷新提交,这时候页面是不会跳转的,虽然action中return 了actionForward但是不顶用的,AJAX接受返回的是action中printWriter 对象输出的字符串,如果有中文,要response.setChar...("");进行转码。printWriter 可以由response对象得到
      

  7.   

    只要是action中的printWriter对象的print方法输出的,页面上调用js的request.responseText就可以得到
      

  8.   

    printWriter的print方法是不是只能输出String ?比如我要返回一个Vector行不行,里面封装了BEAN
      

  9.   

    不行,AJAX返回值只能是Text或者XML,接收也一样,即使可以返回vector,你也没有办法接收
      

  10.   

    也就是说,如果需要接收数据库中的一列或几列内容,需要把传统的关系型数据转为XML数据,返回后用的时候再用DOM转一下?