2016-05-13 10 views
1

javascriptとajax呼び出しが同時に動作する必要があるというコードがあります。しかし、それは動作しませんでした。そしていつも真実に戻って行きます。javascript検証とajax呼び出しが同時に動作しない

create関数の機能は、クエリを実行し、それがさらに実行される結果に依存するデータとajax呼び出しの検証です。応答テキストがyesの場合は、confirmval関数を呼び出します。そしてさらにそれは確認と次の実行を求めるしかし、私は問題が常に真になるfalseを返す関数ではないに直面している。なぜこれが起こっているのか理解できないのですか?

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

これはちょうど(常にtrueを返すように表示されます)confirmval関数の結果を返す、と「falseを返します:あなたはあなたの最初のAJAX呼び出しの後に2つの値を返すようにしようとしている

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

あなたはその結果が必要な場合==「yes」にfalseを返すために、私のようなものをお勧めかもしれません。 – epascarello

+0

どうすればこの種の問題を実装できますか – LOKESH

+0

より正確に言うと、非同期呼び出しからの戻り値はどこにもありません。おそらく、ajaxの成功関数内でコールバック関数を呼び出すことをお勧めします。 –

答えて

-1

'行は決して実行されないので、常にtrueに戻ります。あなたは非同期Ajax呼び出しから戻ることはできません

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を返さないことは注目に値する。実際に戻り値を受け取るコールバック関数を追加すると、決してfalseを返さないので、常にtrueを返します。 –

関連する問題