在我的JSP页面中,我有一个登录表单,其中两个文本框的名称和id为“u”表示用户名,“p”表示密码。我将值视为
var user = document.getElementById(“u”)。value;
var pass = document.getElementById(“p”)。value;
当应用程序的第一个用户尝试以user1身份登录并以pass1身份传递时。该值传递给admin.java,它使用request.getParameter获取值。
这一切都很好。第一个用户注销后。另一个用户尝试使用认证用户再次登录为user2,并传递为pass2,问题是变量用户并传入index.jsp保留相同的旧值user1和pass1。我通过警报框检查了这些。相同的值将传递给Admin.java。
index.jsp中的代码是
function prepareLoginDialog(){
$dialog = $('<div></div>')
.html('<div id="dialog-confirm" title="Enter the login details here :">'+
'User: <input type="text" id="u" name="u" ></input><br />'+
'Pass: <input type="password" id="p" name="p" ></input>'+
'</div>')
//System.out.println(user);
//System.out.println(pass);
.dialog({
autoOpen: false,
modal: true,
title: 'Login',
buttons: {
'Login': function() {
//Send Login Request to Server
alert("I in login");
var user = document.getElementById("u").value;
var pass = document.getElementById("p").value;
alert(user);
alert(pass);
//System.out.println(u.text);
login(user,pass);
$(this).dialog('close');
},
Cancel: function() {
$(this).dialog('close');
}
}
});
$('#login').click(function() {
$dialog.dialog('open');
// prevent the default action, e.g., following a link
return false;
});
}
为什么两个变量中没有采用新值?我哪里出错?
答案 0 :(得分:3)
我认为您的问题与我在此提及的问题相同:Variables doesnt refresh after AJAX request completed
基本上,如果每次都重新创建对话框,那么您也在重新创建ID。这意味着它们不再是唯一的,可能会导致脚本出现问题。尝试在对话框脚本中添加close
函数,如下所示:
.dialog({
autoOpen: false,
modal: true,
title: 'Login',
buttons: {
'Login': function() {
//Send Login Request to Server
alert("I in login");
var user = document.getElementById("u").value;
var pass = document.getElementById("p").value;
alert(user);
alert(pass);
//System.out.println(u.text);
login(user,pass);
$(this).dialog('close');
},
Cancel: function() {
$(this).dialog('close');
}
},
close: function() { $dialog.remove(); } //$(this).remove(); Might also work.
});
这会在DOM关闭时从DOM中删除对话框。
从我的另一篇文章:
您还可以选择将对话框保存在全局变量中,然后检查它是否已定义。如果它没有做你正在做的事情。如果有,设置一个变量告诉它你正在编辑的项目的ID是什么,并在运行.dialog(“open”)之前将所有文本框重置为空白;试。
答案 1 :(得分:0)
单独在你的盒子里会发生吗?为什么不检查清除临时文件和cookie并尝试一下。