struts2 +jquery判断用户是否存在问题

if(username.length<5){$("#usernametext").html('<fontcolor="#ff3333;">用户名格式不正确!</font>... if(username.length<5){
$("#usernametext").html('<font color="#ff3333;">用户名格式不正确!</font>');$("#username").focus();return false;
}
$.post("reglogin!checkUser",{"username":username,"myDate":Math.random()},function(data){
var ooo=$("#hid").val();

alert(ooo);
if(ooo==1){
$("#usernametext").html('<font color="#ff3333;">该用户已经存在!</font>');
$("#username").focus();return false;
}else{
$("#usernametext").html('<font color="#eaf0f00;">恭喜你该用户名可以使用!</font>');
return true;
}
==========================================
<input type="hidden" name="hid" id="hid" value=${a}>

=======================
List<MallUsers> list = service.getUserByName(username);
if (list.isEmpty()) {
a = "0";
} else {
a = "1";
}
session.put("a", a);
为什么不管用户是否存在alert的都是1 呢?
原理上是没错,为什么第一次弹出的是1 以后全是1,第一次是0以后全是0呢,小弟才疏学浅,麻烦各位大哥大姐说的详细一些
展开
 我来答
lmy_sk521
2012-11-16 · TA获得超过2272个赞
知道小有建树答主
回答量:1330
采纳率:73%
帮助的人:721万
展开全部
用struts2+jQuery处理异步请求,建议用json格式返回,具体如下:
1.在项目中加入struts2-json-plugin-2.x.x.jar包
2.在struts.xml文件中
<package name="default" namespace="/" extends="json-default">要改为继承json-default
action中的reuslt改为
<result name="login" type="json">
<param name="includeProperties">result</param>
</result>
这就是请求返回json数据,json中只包含action中的result属性
3.在action中加入如下代码
public String result;
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}

4.action 中的方法代码改为
List<MallUsers> list = service.getUserByName(username);
if (list.isEmpty()) {
result = "0";
} else {
result = "1";
}
5.js改为
$.post("reglogin!checkUser",{"username":username,"myDate":Math.random()},function(data){

var json = eval('(' + data+ ')');
var ooo= json.result;

alert(ooo);
if(ooo==1){
$("#usernametext").html('<font color="#ff3333;">该用户已经存在!</font>');
$("#username").focus();return false;
}else{
$("#usernametext").html('<font color="#eaf0f00;">恭喜你该用户名可以使用!</font>');
return true;
}

还有页同中的<input type="hidden" name="hid" id="hid" value=${a}>
action 中的session.put("a", a);
没有用都删掉

如果上面方法你不会用可以用下面的方法
$.post("reglogin!checkUser",{"username":username,"myDate":Math.random()},function(data){
var ooo='<%=session.getAttribute("a")%>' ;
alert(ooo);
if(ooo==1){
$("#usernametext").html('<font color="#ff3333;">该用户已经存在!</font>');
$("#username").focus();return false;
}else{
$("#usernametext").html('<font color="#eaf0f00;">恭喜你该用户名可以使用!</font>');
return true;
}
jamxval
2012-11-17 · TA获得超过6821个赞
知道大有可为答主
回答量:4308
采纳率:82%
帮助的人:1407万
展开全部
<input type="hidden" name="hid" id="hid" value=${a}> 是做什么用的?谁改它的值?

我觉得你应该在 ajax 的结果中读取数据而不是从 hid 这个隐藏字段上读取,也不是从 session 上读取,因为你这个值不是静态的参数而服务器返回的值,这段代码运行在浏览器中, session.getA 是没有意义的,因为时间都是错的。因为这个字段没有谁更新它,AJAX 的结果是否显示如何显示在页面上是由你的代码处理的,不会自动的。所以如果你没更新到页面上来,它就一直没变。

过程是这样的,第一次这个页面显示出来,那个 hid 已经有值了。
用户输入用户名后,检查代码会用 ajax 把用户名发给服务器检查,服务器应该返回一个内容告诉是否重复,记住,这一步页面不会被更新,服务器也不应该返回一个完整的 HTML,而是简单的 1 就行了。
我们的 ajax sucess handler 函数应该直接取 responseText 的值。使用 Google Chrome 浏览器在这个 if (ooo ===1) 地方下个断点,打开 debug 功能是按 F12.

重要的一点你必须明白 JSP 的 JS/HTML 代码和 <% %> Java 代码分别是在什么时候被执行的。Java 代码总是在服务器上执行,也就是说 java 代码执行之后再回到浏览器上,到了浏览器之后你就不要再想着从 session.getAttribute 这种想法了。如果连这个都没搞清楚,你很难理解一些参数值应该放在什么地方。在 JS 函数里面的值它在运行时已经到了浏览器,不可能拿到服务器的,而当时使用它的 java 代码得到的值,相当于这个JS 在离开服务器到达浏览器时这个值是 hard-code 的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
程序那点事
2012-11-16 · TA获得超过6140个赞
知道大有可为答主
回答量:3253
采纳率:59%
帮助的人:1324万
展开全部
你怎么能放session里面呢
你这个data 压根就没用啊
你应该在
servlet中通过
response.setContentType("text;charset=GBK");
PrintWriter pw = response.getWriter();
TUsers t_user = userService.findByUser(name);
if (t_user != null) {
pw.print("1");
pw.close();
} else {
pw.print("0");
pw.close();
}

我想问下var ooo=$("#hid").val();这个hid是哪里来的
你后台判断返回的数据呢
再说你放session里面 数据肯定会重复啊
你知道session的作用域不呢
追问
List list = service.getUserByName(username);
if (list.isEmpty()) {pw.print("0");} else {pw.print("1");}
$.post("reglogin!checkUser",{"username":username,"myDate":Math.random()},function(data){
if(data){
$("#usernametext").html('该用户已经存在!');
$("#username").focus();return false;
}else{····}还是不行啊,一直都是一种结果
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tiandesgin
2012-11-16 · TA获得超过169个赞
知道小有建树答主
回答量:357
采纳率:100%
帮助的人:240万
展开全部
var ooo=$("#hid").val();

alert(ooo);
你这个是干嘛,请求返回的值放在data里(注意理解毁掉函数),不用再去拿隐藏域
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式