Struts2+jQuery提交问题

时间:2023-01-23 09:08:39
JQuery 提交表单不刷屏幕提交到同一个页面。请问还有没有什么其他的方法。
不用Struts2<s:if><s:else>来解决不刷屏幕提交到同一个页面。

原来是用这样的方法做的。
这个方法不好使,请问还有没有什么其他的方法。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" >
<%@ page language="java" pageEncoding="utf-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>用户登录</title>
<link type="text/css" rel="stylesheet" href="style/validatorTidyMode.css" />
<script src="js/formValidator.js" type="text/javascript"></script>
..............
<script type="text/javascript">
$(document).ready(function() {
({
buttons : $("#button").click(function() {
enctype = "multipart/form-data"
if ($.formValidator.pageIsValid('1')) {sub();}
  })
})
});
function sub()
{
       var username = document.getElementById("username").value;
       var password = document.getElementById("password").value; 
   $.ajax({
   url:"login.action?username="+username+"&password="+password,
   type:'post',
   data:"SUCCESS",
   success:function(data){
    $("#serverright").html(decodeURI(data));
   },
   error:function(){$("#serverResponse").html(decodeURI(data));}
});
}
</script>
  </head>
    <body>
<s:if test="#session.userif != null">
<div id="serverright">
     登陆成功:<s:property value="#session.userif" />&nbsp;&nbsp;&nbsp;&nbsp;||&nbsp;&nbsp;&nbsp;&nbsp;<a 

href="cancellation.action">注销</a>   </div>
</s:if>
<s:else>
    <div id="serverResponse">
<table>
<tr>
<td>
用户名:
<s:textfield id="username" name="user.username" label="用户名 " 

theme="simple"/>
</td>
<td>
密码:
<s:password id="password" name="user.password" label="密码" 

theme="simple"/>
</td>
<td>
<s:submit name="button" id="button" value="提交" theme="simple"/>
</td>
</tr>
</table>
</div>
</s:else>
</body>
</html>


8 个解决方案

#1


要提问...把话说清楚...OK??
你到底要问什么那?提交失败?ACTION失败??还是你解析有问题??
$.ajax({ 
  url:"login.action?username="+username+"&password="+password, 
  type:'post', 
  data:"SUCCESS", 

你不是GET提交的吗??
怎么type又是post了??
data:"SUCCESS", 又是什么东西?

#2


不是get提交,
是post提交。
而且不用<s:form>
那种方式提交。
data:"SUCCESS"

是成功的话,执行页面上的<div id="serverright"> 这个
还是同一个页面显示登录成功。

#3


想问的就是用别的方法用JQuery+AJAX来实现,
登录和登录成功页面都在同一个JSP页面显示。
而且不用<S:from>方法来解决。

#4


而且不用 <s:form>方法来解决。

#5


 $.ajax({ 
  url:"login.action?username="+username+"&password="+password, 
  type:'post', 
  data:"SUCCESS", 
  success:function(data){ 
    $("#serverright").html(decodeURI(data)); 
  }, 
  error:function(){$("#serverResponse").html(decodeURI(data));} 
}); 



ajax方法写得有问题。
  data:"SUCCESS"可以去掉。另外添加dateType这个参数,用来指定服务器返回的数据类型。
我比较习惯用json,后台这样封装
验证通过:
JSONObject json = new JSONObject();
tradeTraceInfoDao.delete(id);
json.accumulate("success", true);
不通过
json.accumulate("success", false);
Struts2Utils.renderJson(json.toString());
回调方法:
success:function(data){ 
    if(date.success==true){
    //显示成功!
    }else{
       //显示失败!  
       }
  }, 

#6


dataType:"json"

#7


引用 2 楼 lojey 的回复:
不是get提交,
是post提交。
而且不用 <s:form>
那种方式提交。
data:"SUCCESS"

是成功的话,执行页面上的 <div id="serverright"> 这个
还是同一个页面显示登录成功。

是你自己拼的URL串啊...
post提交不是这样做的....


var param = [
 { name : 'username', value : username }
,{ name : 'password', value : password }
];
$.ajax({
type: 'post',
url: 'login.action',
data: param,
dataType: 'json',
success: function(data){alert(data);},
error: function(data) {alert(data);}
});

#8


那你们用的就是普通的 json 啊 ?
还是用的是json里的 json rpc 啊?

#1


要提问...把话说清楚...OK??
你到底要问什么那?提交失败?ACTION失败??还是你解析有问题??
$.ajax({ 
  url:"login.action?username="+username+"&password="+password, 
  type:'post', 
  data:"SUCCESS", 

你不是GET提交的吗??
怎么type又是post了??
data:"SUCCESS", 又是什么东西?

#2


不是get提交,
是post提交。
而且不用<s:form>
那种方式提交。
data:"SUCCESS"

是成功的话,执行页面上的<div id="serverright"> 这个
还是同一个页面显示登录成功。

#3


想问的就是用别的方法用JQuery+AJAX来实现,
登录和登录成功页面都在同一个JSP页面显示。
而且不用<S:from>方法来解决。

#4


而且不用 <s:form>方法来解决。

#5


 $.ajax({ 
  url:"login.action?username="+username+"&password="+password, 
  type:'post', 
  data:"SUCCESS", 
  success:function(data){ 
    $("#serverright").html(decodeURI(data)); 
  }, 
  error:function(){$("#serverResponse").html(decodeURI(data));} 
}); 



ajax方法写得有问题。
  data:"SUCCESS"可以去掉。另外添加dateType这个参数,用来指定服务器返回的数据类型。
我比较习惯用json,后台这样封装
验证通过:
JSONObject json = new JSONObject();
tradeTraceInfoDao.delete(id);
json.accumulate("success", true);
不通过
json.accumulate("success", false);
Struts2Utils.renderJson(json.toString());
回调方法:
success:function(data){ 
    if(date.success==true){
    //显示成功!
    }else{
       //显示失败!  
       }
  }, 

#6


dataType:"json"

#7


引用 2 楼 lojey 的回复:
不是get提交,
是post提交。
而且不用 <s:form>
那种方式提交。
data:"SUCCESS"

是成功的话,执行页面上的 <div id="serverright"> 这个
还是同一个页面显示登录成功。

是你自己拼的URL串啊...
post提交不是这样做的....


var param = [
 { name : 'username', value : username }
,{ name : 'password', value : password }
];
$.ajax({
type: 'post',
url: 'login.action',
data: param,
dataType: 'json',
success: function(data){alert(data);},
error: function(data) {alert(data);}
});

#8


那你们用的就是普通的 json 啊 ?
还是用的是json里的 json rpc 啊?