$.ajax请求做登陆校验,执行完beforeSend,原地刷新页面。后台controller正常执行,但无法接收到后台响应
$.ajax,仅执行beforeSend,未执行complete,未进入success/error的function。
登陆的ajax请求。
<script>
function register() {
var user = new Object();
user.Uname=$.trim($("#rusername").val()); //$.trim() 函数用于去除字符串两端的空白字符。
user.Upwd=$.trim($("#rpassword").val());
$.ajax({
type:'POST',
url:'/ajax/register',
data:{ObjectUser:JSON.stringify(user)},//以JSON字符串形式把user传到后台
async:true,
dataType:'text',//后台返回的数据类型是html文本
timeout:1000, //请求超时时间(ms)
beforeSend:function(){
//请求前的处理
// alert("sending")
},
success:function(req){
//请求成功时处理
if (req != "" && req == "success"){
alert("注册成功!")
$("#refresh").empty();
$("#refresh").append("<h1>请登录</h1>\n" +
"\t\t\t\t\t<div class=\"head\">\n" +
"\t\t\t\t\t\t<img src=\"images/user.png\" alt=\"\"/>\n" +
"\t\t\t\t\t</div>\n" +
"\t\t\t\t<form>\n" +
"\t\t\t\t\t\t<input type=\"text\" placeholder=\"用户名\" class=\"text\" id=\"username\" >\n" +
"\t\t\t\t\t\t<input type=\"password\" placeholder=\"密码\" id=\"password\">\n" +
"\t\t\t\t\t\t<div class=\"submit\">\n" +
"\t\t\t\t\t\t\t<input type=\"submit\" οnclick=\"login()\" value=\"LOGIN\" >\n" +
"\t\t\t\t\t</div>\t\n" +
"\t\t\t\t\t<p><a href=\"/register\">我要注册</a></p>\n" +
"\t\t\t\t</form>")
}else{
alert("注册失败");
$("#rusername").val('');
$("#rpassword").val('');
$("#repassword").val('');
}
},
complete:function(){
//请求完成的处理
// alert("complete")
},
error:function(){
//请求出错处理
alert("请求出错...")
}
})
}
</script>
登录的页面代码
<div class="main">
<h1 id="change"></h1>
<div class="login-form" id="refresh">
<h1>欢迎注册</h1>
<form>
<input type="text" id="rusername" class="text" placeholder="请输入用户名"><span id="namemsg"></span>
<input type="password" id="rpassword" placeholder="请输入密码"><span id="pwdmsg"></span>
<input type="password" id="repassword" placeholder="请确认密码"><span id="repwdmsg"></span>
<div class="submit">
<!-- <button onclick="register()" id="regbtn" value="注册"></button>-->
<!-- <button onclick="register()" value="注册" id="regbtn" style="height: 30px; width: 60px" class="btn btn-success">注册</button>-->
<input type="submit" onclick="register()" value="注册" id="regbtn">
</div>
<p><a href="/toLogin">去登陆</a></p>
</form>
</div>
</div>
原因是form标签,因为拿的模版,form标签也没id,没属性的,就完全没有注意到。在from里面做提交之类的方法。拿来度娘的form标签介绍来学习一哈
表单标签
<form></form>
功能:用于申明表单,定义采集数据的范围,也就是<form>和</form>里面包含的数据将被提交到服务器或者电子邮件里。
语法:<FORM ACTION="URL" METHOD="GET|POST" ENCTYPE="MIME" TARGET="...">. . .</FORM>
虽然我form表单里没有属性,但点按钮的时候那个动作,启动ajax请求,form表单也会进行一次提交。
结果就是ajax请求发出去了,form表单也提交了,但因为form表单没有属性,就像<a href="#"></a>
一样,原地刷新了一下,但是跑到一半的ajax请求就傻*了,,这tm什么情况!!嗯,,,把form标签前后删掉即可解决。。
哎,,看了我半小时还以为受到哪个绑定事件的影响。吃一堑长一智,,,哈哈哈哈哈哈哈哈