Javascript XRIO在单击时进行多个调用
我的.js文件Javascript XRIO在单击时进行多个调用,javascript,ajax,servlets,google-closure-library,Javascript,Ajax,Servlets,Google Closure Library,我的.js文件 function call() { var val1; var val2; var b2 = new goog.ui.Button(); b2.decorate(goog.dom.getElement('but')); goog.events.listen(b2, goog.ui.Component.EventType.ACTION,
function call() {
var val1;
var val2;
var b2 = new goog.ui.Button();
b2.decorate(goog.dom.getElement('but'));
goog.events.listen(b2, goog.ui.Component.EventType.ACTION,
function(e) {
val1 = (goog.dom.getElement('liun').value);
val2 = (goog.dom.getElement('lipw').value);
var request = new goog.net.XhrIo();
var res;
goog.events.listen(request, "complete", function(e){
var xhr = /** @type {goog.net.XhrIo} */ (e.target);
res = xhr.getResponseText();
if(xhr.getResponseText() == "true")
{
goog.dom.getElement("sp1").innerHTML = ("Hi Welcome");
}
else
{
goog.dom.getElement("sp1").innerHTML = ("Invalid Username or Password");
}
});
var url = 'mylogin?username='+val1+'&password='+val2;
request.send(url, "GET");
});
}
我的servlet
public class mylogin extends HttpServlet
{
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
String uname = ((req.getParameter("username")).trim());
String pword = ((req.getParameter("password")).trim());
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
System.out.println("" + uname + " " + pword);
String tof;
if((uname.equals("arjun"))&&(pword.equals("daglur")))
{
tof = "true";
}
else
{
tof = "false";
}
System.out.println(tof);
out.write(tof);
out.close();
}
}
第一次单击“发送”时,其未被发送。第二次是打一个电话。第三次打2个电话,第四次打3个电话。
在jsp中单击调用call()。您正在装饰按钮“#but”,该按钮的onclick方法为“call()”。第一次单击它时,它会将google事件侦听器绑定到该按钮-
goog.events.listen(b2, goog.ui.Component.EventType.ACTION,
现在“#but”既有“call()”的onclick方法(该方法不被闭包的事件处理程序覆盖),也有一个事件处理程序。第二次单击按钮时,它将触发事件处理程序和“onclick”方法,后者将另一个事件处理程序绑定到按钮。(等等)。这就是为什么每次单击它都会增加呼叫量
我建议不要让按钮具有onclick方法,而是在页面呈现后将事件处理程序绑定到按钮。“在jsp中单击时调用call()。”您能在发生这种情况的地方提供代码吗?似乎您正在将onclick事件重新绑定到同一DOM元素。用户名
密码确定我找到了,我将事件侦听器更改为这个goog.events.listen((goog.DOM.getElement('but')),goog.events.EventType.CLICK,函数(e){………}好的,当我尝试转发到一个新页面时,由于用户身份验证为true,我遇到了另一个问题。我已将新请求映射到一个servlet,在该servlet中,我将请求转发到一个新页面。my.js中的代码如下所示:傻瓜
var req1=new goog.net.XhrIo();req1.send('forward')转发servlet中的代码如下RequestDispatcher dispatch=req.getRequestDispatcher(“test1.jsp”);dispatch.forward(req,resp);