jquery用ajax做值重复验证的时候,第一次调用变量是空 第二次调用才是想要的值
$(function(){$("#txtloginname").blur(function(){varsloginName="";varloginname=$(this)...
$(function(){
$("#txtloginname").blur(function(){
var sloginName ="";
var loginname = $(this).val();
if(loginname == ""){
sloginName = "用户名不能为空";
}else {
$.post("validate!loginname?dt="+new Date().getTime(),{"loginname":loginname},
function(data){
if(data.lOK){
sloginName = "用户名可以使用";
flagl = true;
}else {
sloginName = "用户名已存在";
flagl = false;
}
},"json");
}
alert(sloginName);//必须加这个 否则就显示上次的值
$("#loginNameInfo").html("");
$("#loginNameInfo").html(sloginName);
});
}); 展开
$("#txtloginname").blur(function(){
var sloginName ="";
var loginname = $(this).val();
if(loginname == ""){
sloginName = "用户名不能为空";
}else {
$.post("validate!loginname?dt="+new Date().getTime(),{"loginname":loginname},
function(data){
if(data.lOK){
sloginName = "用户名可以使用";
flagl = true;
}else {
sloginName = "用户名已存在";
flagl = false;
}
},"json");
}
alert(sloginName);//必须加这个 否则就显示上次的值
$("#loginNameInfo").html("");
$("#loginNameInfo").html(sloginName);
});
}); 展开
1个回答
展开全部
$("#loginNameInfo").html(sloginName);
这句应该写在回调函数里,
}else {
$("#loginNameInfo").html("");//异步操作前清空信息内容
$.post("validate!loginname?dt="+new Date().getTime(),{"loginname":loginname},
function(data){
if(data.lOK){
sloginName = "用户名可以使用";
flagl = true;
}else {
sloginName = "用户名已存在";
flagl = false;
}
$("#loginNameInfo").html(sloginName);//回调函数最后加入信息内容
},"json");
}
这句应该写在回调函数里,
}else {
$("#loginNameInfo").html("");//异步操作前清空信息内容
$.post("validate!loginname?dt="+new Date().getTime(),{"loginname":loginname},
function(data){
if(data.lOK){
sloginName = "用户名可以使用";
flagl = true;
}else {
sloginName = "用户名已存在";
flagl = false;
}
$("#loginNameInfo").html(sloginName);//回调函数最后加入信息内容
},"json");
}
追问
问题是解决了 但是我想请问一下 为什么我的那个方法 要第二次输出sloginName 才能显示呢 如果能回答这个我加分
追答
要说清楚这个问题得先了解$.post,$.post是异步向服务器端发送请求,也就是说他只负责向服务器端发送一个请求,不需要等服务器的回应,就再继续做下面的事,像你这么写法$("#loginNameInfo").html(sloginName);还没有等到服务器回应就先执行了。当服务器处理完成数据后,自动调用客户端的function(data){....}执行相应的操作(所以这块内容叫回调函数)。因此,这里有一个先后的问题。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询