2016-05-13 65 views
1

我有代碼在那個JavaScript和Ajax調用需要同時工作。但它沒有奏效。並始終迴歸真實。javascript驗證和ajax調用同時不工作

創建函數的功能是驗證執行查詢的數據和ajax調用,並依賴於進一步執行的結果。如果回覆文字爲是,則請致電confirmval函數。然後進一步要求確認和下一次執行但我面臨的問題是函數不返回false它總是成真。我不明白爲什麼會發生這種情況?

function create() 
      {       
       if (document.companyregister.cmpname.value === "") 
       { 
        alert("Please Enter Company name"); 
        document.companyregister.cmpname.value = ""; 
        document.companyregister.cmpname.focus(); 
        return false; 
       } 

       var companyname = document.companyregister.cmpname.value; 
       var username = document.companyregister.username.value; 
        $.ajax({ 
        url: 'checkexisting.php', 
        type: 'POST', 
        data: {companyname: companyname,username:username}, 
        success: function(errorResponse) { 
         var result = errorResponse.trim();       
         if(result=="yes"){        
          return confirmval(companyname,username);         
         } 
         else{ 
          document.getElementById("formsubmitting").style.display = "block"; 
          document.getElementById("hidesubmit").style.display = "none"; 
          return true; 
         }       
         } 
        }); 
} 

function confirmval(companyname,username){ 
       var c = confirm("This company is already created.\nWould you like to delete existing company?");     
       if(c){ 
        alert("c");      
        $.ajax({ 
        url: 'updatecompany.php', 
        type: 'POST', 
        data: {companyname: companyname,username:username}, 
        success: function(responsetext) { 
         var result = responsetext.trim();       
         if(result=="yes"){ 
          document.getElementById("formsubmitting").style.display = "block"; 
          document.getElementById("hidesubmit").style.display = "none"; 
          return true; 
         }            
         } 
        }); 
       } 
       else{ 
        alert("notc");      
        window.location="http://www.google.com"; 
       } 
      } 
+3

你不能從一個異步Ajax調用返回。 – epascarello

+0

那麼我怎樣才能實現這種問題 – LOKESH

+0

更確切地說:你從異步調用返回「返回」無處。您可能需要在ajax成功函數中調用回調函數。 –

回答

-1

您正在嘗試你的第一個Ajax調用後返回兩個值:

if(result=="yes"){        
    return confirmval(companyname,username); 
    return false; 
} 

這將剛剛返回confirmval功能(這似乎總是返回true)的結果,以及「返回false '線永遠不會運行,因此它將始終返回true。

如果你需要的是結果==「是」返回假的,我可能會建議是這樣的:

if(result=="yes"){ 
    var confirmvalResult = confirmval(companyname,username); 
    if(confirmvalResult) { 
     return false; 
    } else { 
     // not sure what you want to do here 
    } 
} 
+0

那不是問題 – LOKESH

+0

確實,這不是問題。那些回報無處可去。 –

+0

值得注意的是,你的confirmval函數永遠不會返回false。如果您添加回調函數以實際接收您的返回值,它將始終返回true,因爲您永遠不會返回false。 –