怎么用ajax访问action中的方法

本来是跳转到新页面显示错误信息,现在需要在点击按钮时,就直接在原来的页面上弹出提示信息.
action中的方法如下:

    public String sendEmail() throws Exception {
        MailBean mailBean = setMailBean();
        try {

            if(!isWriteRight(mailBean,mailInfoFB.getTo())){
                mailInfoFB.setSended(false);
                mailInfoFB.setFrom("收件人错误,请检查您填写的收件人是否有误!");
                deleteAttachment();// 发完信息时删除硬盘中的附件信息
                return "sendMailSuccess";
            }
        }

Struts的信息

 <action name="sendMail" class="userSendMailAction">
            <result name="success">/user/user_send_mail.jsp</result>
            <result name="sendMailSuccess">/user/user_sendMail_success.jsp</result>

            <interceptor-ref name="loginInterceptor" />
        </action>

jsp中的代码

 <input type="button" title="发信" value="发&nbsp;信" onclick="checkTo()"/>
    function checkTo(){
        var to =$.trim($("#i_receive").val());
        var sub = $("#i_subject").val();
        var con = $("#i_content").val();
        var cc =$.trim($("#i_cc").val());
        var bcc =$.trim($("#i_bcc").val());
        if(to == "" || to.length==0){
            alert("请填写联系人!");return ;
        } 
        if(sub == "" || sub.length==0){
            alert("请填写邮件主题!");return ;
        } 
        if(to != "" && to.length>0){
            if(!reg.test(to)){
                    alert("你输入的收件人地址不正确!");return ;
            }
        } 
        if(cc != "" && cc.length>0){
            if(!reg.test(cc)){
                alert("你输入的抄送人地址不正确!");return ;
            }
        } 
        if(bcc != "" && bcc.length>0){
            if(!reg.test(bcc)){
                alert("你输入的密送人地址不正确!");return ;
            }
        } 
            showProgress("正在发送邮件...");//显示保存进度
            $("#sendmail").submit();

    }

增加form

`<form action="<%=basePath %>user/sendMail!sendEmail.action" method="post" id="sendmail">






http://www.cnblogs.com/guoxu/articles/1727611.html

ajax不会控制浏览器跳转,你要自己写js来进行跳转

ajax回调成功后判断返回的内容是否包含你跳转后页面的内容,有的话用location='xxxx'进行跳转

form呢。。 关键东西没有贴出来;。偷笑。
你用过AJAX就应该可以实现这个需求呀。
再返回到当前页面。你后面看样子是Action; 同时你想使用AJAX。这会导至你会跳转页面;而不是在当页面前进行返回;
你应该听得懂吧;你可以用Js的AJAX或者是使用JQuery的AJAX。都可以;
关键所在就是这一步不需要经过你的Action;而是在Ajax的Url中传入Action的值。
我看你的意思是直接在from里面写上Path Action;。。
改一下吧。我解释的很清楚了;

Ajax用于异步与数据库进行交互,不影响页面其他部分交互的流畅性,就楼主目前贴出的代码,并没有使用Ajax,就目前情况来看,需要修改JSP中的checkTo()函数,和action中的sendEmail()

checkTo()函数如下:

 function checkTo(){
        var to =$.trim($("#i_receive").val());
        var sub = $("#i_subject").val();
        var con = $("#i_content").val();
        var cc =$.trim($("#i_cc").val());
        var bcc =$.trim($("#i_bcc").val());
        if(to == "" || to.length==0){
            alert("请填写联系人!");return ;
        } 
        if(sub == "" || sub.length==0){
            alert("请填写邮件主题!");return ;
        } 
        if(to != "" && to.length>0){
            if(!reg.test(to)){
                    alert("你输入的收件人地址不正确!");return ;
            }
        } 
        if(cc != "" && cc.length>0){
            if(!reg.test(cc)){
                alert("你输入的抄送人地址不正确!");return ;
            }
        } 
        if(bcc != "" && bcc.length>0){
            if(!reg.test(bcc)){
                alert("你输入的密送人地址不正确!");return ;
            }
        } 
            showProgress("正在发送邮件...");//显示保存进度
                        var parm = 
                        {
                            //参数
                        };
            $.ajax({ 
                                        url: 'sendMail!sendEmail.action',
                                        data: parm,
                                        type: 'post',
                                        dataType: 'json',
                                        contentType: 'application/x-www-form-urlencoded',  
                                        cache: false,
                                        success:
                                            function(data)
                                            {   
                                                if(data.flag==='success')
                                                {
                                                    alert(data.flag);
                                                }
                                                else
                                                {
                                                    alert(data.flag);
                                                }

                                            }, 
                                        error:
                                            function(xhr)
                                            {
                                                alert('action 有错误!');
                                            }
                                    });     

    }

action代码:

 public void sendEmail() throws Exception {
        MailBean mailBean = setMailBean();
        try {

            if(!isWriteRight(mailBean,mailInfoFB.getTo())){
                mailInfoFB.setSended(false);
                mailInfoFB.setFrom("收件人错误,请检查您填写的收件人是否有误!");
                deleteAttachment();// 发完信息时删除硬盘中的附件信息
                PrintWriter out = null; 
                                response.setContentType("text/html;charset=utf-8");     
                                JSONObject jsonObj = new JSONObject();
                                jsonObj.put("flag", 'success');
                              System.out.println("jsonObj:"+jsonObj);

                                try
                                { 
                                    out = response.getWriter();
                                    out.print(jsonObj.toString());
                                    out.flush(); 
                                }
                                catch(Exception e)
                                { 
                                    e.printStackTrace(); 
                                }
            }
        }

form中添加action的引用调用路径即可

http://blog.163.com/qqabc20082006@126/blog/static/229285252010318104547780/
ajax代码里直接调用action