本来是跳转到新页面显示错误信息,现在需要在点击按钮时,就直接在原来的页面上弹出提示信息.
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="发 信" 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