2016-02-16 65 views
0

我試圖檢查一個電子郵件是否存在於數據庫中,但函數沒有返回值。ajax post的回覆響應

這是代碼:

function checkemail(email) 
{ 
    var returnVal = ""; 
    if (email.indexOf("@") != -1 && email.indexOf(".") != -1) 
    { 
     $.post("registreren.php?email=" + email, function(response) { 
      if(response == 1) { returnVal = 1; } 
      if(response == 2) { returnVal = 2; } 
     }); 
    } 
    else 
    { 
     returnVal = 3; 
    }//email 

    return returnVal; 

} 

編輯:電子郵件發送作爲字符串

+1

的[?我如何返回從一個異步調用的響應(可能的複製http://stackoverflow.com/questions/14220321/how- do-i-return-the-an-asynchronous-call) –

+0

$ .ajax是異步函數,使用回調 –

回答

0

我短,因爲它本質上是異步無法從ajax調用返回值,聲明return value執行前

爲了應對這樣的情況下,使用callback,函數接受作爲參數,這是執行當收到response時(當異步操作完成時)。

試試這個:

function checkemail(email, callback) { 
 
    var returnVal = ""; 
 
    if (email.indexOf("@") != -1 && email.indexOf(".") != -1) { 
 
    $.post("registreren.php?email=" + email, function(response) { 
 
     callback(response); 
 
    }); 
 
    } else { 
 
    callback(3); 
 
    } 
 
} 
 
checkemail('[email protected]', function(val) { 
 
    alert(val); 
 
}); 
 

 
checkemail('INVALID_EMAIL', function(val) { 
 
    alert(val); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

+0

它工作得很好!謝謝 – naknak12

-1

你可以使用一些簡單的像下面

$.ajax({ 
     url: 'registreren.php', 
     type: 'post', 
     dataType: "json", 
     data: {'email': email}, 
     success: function (response) { 
      if (response == 1) 
      { 
       returnVal = 1; 
      } 
      else 
      { 
       returnVal = 3; 
      } 
     } 
    }); 

,而不是

$.post("registreren.php?email=" + email, function(response) { 
      if(response == 1) { returnVal = 1; } 
      if(response == 2) { returnVal = 2; } 
    }); 
+0

您所做的只是交換速記的簡寫。它根本沒有解決這個問題。 –

+0

並不重要,如果它解決了問題..順便說它有更多的選擇,你可以通過。 –

+0

雖然它不能解決問題,但如果您不需要傳遞這些選項,那就是簡寫。 –