不能用ajax提交我的表单两次
Can't submit my form twice with ajax
大家好,我有一些问题(我认为简单)表单提交与ajax。
用户第一次提交表单时,一切正常:div的内容改变,php被处理。但是如果在我的数据库中没有匹配,它将返回"f", javascript将写回一个无法使用的表单,不能用ajax重新提交。
HTML:<div class="maincontainer" id="login">
<form id="loginform" onsubmit="void login();return false;">
<input name="username" type="text" class="textboxinput" id="username" autocomplete="off" />
<input name="password" type="password" class="textboxinput" id="password" autocomplete="off" />
<input type="submit" name="button" class="button" id="button" value="Login" />
</form>
</div>
Javascript: function login(){
//Change the box content to "Logging in"
$("#login").html("<p style='line-height:170px;text-align:center;width:100%;margin:0px;padding:0px;'>Logging in</p>");
//Get the values of the username and password field
var username = $('#username').val();
var password = $('#password').val();
//Make the ajax request
$.ajax({
datatype: "text",
type: "POST",
url: "process.php",
data: "username=" + username + "&password=" + password,
success: function (m) {
//If there's no match, rewrite the form in the div
if ( m == "f"){
content= " <form id='loginform' onsubmit='void login();return false;'><input name='username' type='text' class='textboxinput' id='username' autocomplete='off' /><input name='password' type='password' class='textboxinput' id='password' autocomplete='off' /><input type='submit' name='button' class='button' id='button' value='Login' /> <p style='font-size:small;'>Login failed, please try again</p></form>";
$("#login").html(content);
}
}
});
};
编辑
我没有找到问题,但我找到了一个解决方案,那就是不擦除我的表单,只是隐藏它
HTML:<div class="maincontainer" id="login">
<div id="errorbox"></div>
<form id="loginform" onsubmit="return login();">
<input name="username" type="text" class="textboxinput username" id="username" value="username" onfocus="if(this.value==this.defaultValue) this.value='';" onblur="if(this.value=='') this.value='username'" autocomplete="off" />
<input name="password" type="password" class="textboxinput password" id="password" value="password" onfocus="if(this.value==this.defaultValue) this.value='';" onblur="if(this.value=='') this.value='password'" autocomplete="off" />
<input type="submit" name="button" class="button" id="button" value="Login" />
<div id="errorshow"><a href="register.php">Register</a><a href="credsretrieve.php">Forgot your login infos?</a></div>
</form>
</div>
Javascript: function login(){
var username = $('#username').val();
var password = $('#password').val();
//Do security checks here
$("#loginform").hide();
$("#errorbox").html("<p class='logloading'>Logging in</p>");
$.ajax({
datatype: "text",
type: "POST",
url: "login.php",
data: "username=" + username + "&password=" + password + "&method=js",
success: function (m) {
if ( m == "f"){
$("#errorbox").html("");
$('#username').val("");
$('#password').val("");
$("#loginform").show();
$("#errorshow").html("<p class='errormsg'>Wrong username/password combination</p>");
$("#username").focus();
}
else{
window.location = m;
}
}
});
return false;
};
哦,我应该感谢每个在这里评论(和发帖)的人,每一个信息都对我有一点帮助。
只是一个修正,不是对你最初问题的明确回答。
我使用
data: $('#form_id').serialize()
而不是手动完成所有这些:
data: "username=" + username + "&password=" + password,
当用户提交一个空格时会发生什么?您的查询中断。
只需确保用户名框的名称为username
,密码框也遵循相同的模式。
编辑
这段代码有点奇怪:
onsubmit='void login();return false;'
不要手动输入这个,试试下面的代码(只是删除那部分并插入这个):
$('#loginform').live('submit', function(e) {
login();
e.preventDefault()
});
我想我之前也遇到过这个问题。
一个可行的解决方法是将登录函数放在提交按钮的onclick上(并且也返回false)
相关文章:
- 在servlet中提交两个表单
- 我如何让我的脚本连续提交两个表单
- 在一次点击中发布到两个表单 JavaScript
- 一次点击,两次'单击'事件已启动
- 只需一个按钮即可在页面上提交两个表单
- HTML5两个表单将分别打印出来
- 使用jQuery组合两个表单输入值
- 两个表单,一个选择/下拉框-需要将选择值从一个表单复制到另一个表单
- 我怎么能只提交两个表单元素
- 收听在同一页面上使用两个表单提交事件
- 两个表单 - 一个提交按钮
- 如何使用一个带有 rails 和 javascript 的提交按钮提交两个表单
- 重置选择的一次表单的操作侦听器
- Angularjs 两个表单用于同一个控制器
- Rails/General HTML:如何从两个表单提交内容
- 如何使用一个 JavaScript 函数管理两个表单
- 尝试在 Bootstrap 中将两个表单并排放置.任何想法如何
- 在php中提交两次表单
- 通过ajax POST提交两次表单
- 验证插件一次处理两个表单,错误