2015-10-16 35 views
0

我写了一个函数在我的网站,以验证用户名Ajax请求回调调用另一个函数

//Check username 
//Check if the length is greater than 3 and no username already exists. Several other checks included 

$('#username').blur(function() 
{ 

     var v=this.value; 
     if(v == "") 
     { 
      addPopover(this,'This field is required!'); 
      $('#username_group').removeClass("has-success").addClass("has-error"); 
      $('#username_feedback').removeClass("glyphicon-ok").addClass("glyphicon-remove"); 
     } 
     else if(username.length < 4) 
     { 
      addPopover(this,'The username must be atleast 4 characters long'); 
      $('#username_group').removeClass("has-success").addClass("has-error"); 
      $('#username_feedback').removeClass("glyphicon-ok").addClass("glyphicon-remove"); 
     } 
     else 
     { 
      $.post('php/check_username_avail.php',{ username : v },function(data){ 

        if(data == "false") 
        { 
         alert('false occurred'); 
         addPopover(this,'Sorry! this username is already taken.'); 
         $('#username_group').removeClass("has-success").addClass("has-error"); 
         $('#username_feedback').removeClass("glyphicon-ok").addClass("glyphicon-remove"); 
         alert('false ended'); 
        } 
        else if(data == "true") 
        { 
         alert('true occurred'); 
         removePopover(this); 
         $('#username_group').addClass("has-success").removeClass("has-error"); 
         $('#username_feedback').addClass("glyphicon-ok").removeClass("glyphicon-remove"); 
         alert('true ended'); 
        } 
        else 
        { 
         alert('else occurred!'); 
         addPopover(this,data); 
         $('#username_group').removeClass("has-success").addClass("has-error"); 
         $('#username_feedback').removeClass("glyphicon-ok").addClass("glyphicon-remove"); 
         alert('else ended'); 
        } 
       }).error(function(){ 
        alert("An error occurred. Unable to validate username"); 
       }); 
     } 
}); 


//function to add popover 
function addPopover(id,message) 
{ 
    alert("in add popover"); 
    $(id).attr("data-toggle","popover"); 
    $(id).attr("data-trigger","focus"); 
    $(id).attr("data-placement","left"); 
    $(id).attr("data-content",message); 
    $(id).popover(); 
    alert('add popover ended'); 
} 

//function to remove popover 
function removePopover(id) 
{ 
    alert("in remove popover"); 
    $(id).removeAttr("data-toggle"); 
    $(id).removeAttr("data-trigger"); 
    $(id).removeAttr("data-placement"); 
    $(id).removeAttr("data-content"); 
    alert("remove popover ended"); 
} 

当数据是假的,我看到4个警报,即“中加酥料饼”,“发生错误”,”添加弹出式结束“和”错误结束“。

但仍添加在addPopover函数中的属性不会被添加。为什么这样?

+0

你可以创建一个小提琴,让我们可以测试更容易吗? – polydor

+0

@Mestrum我不知道如何为ajax请求创建小提琴。 – Raman

回答

1

“这个”里面的回调函数并不是你所期望的。

$('#username').blur(function() { 
    var that = this, 
     v = this.value; 
    //... 
    $.post('php/check_username_avail.php', { username : v }, function(data) { 
     //... 
     addPopover(that,'Sorry! this username is already taken.'); 
     //... 
    } 
    //... 
} 
+0

谢谢。那太愚蠢了。 – Raman

相关问题