2016-02-16 2 views
0

Я пытаюсь проверить, существует ли электронное письмо в db, но функция не возвращает значение.rerturning response of 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; 

} 

EDIT: электронная почта отправить в виде строки

+1

Возможный дубликат [? Как вернуть ответ от асинхронного вызова] (http://stackoverflow.com/questions/14220321/how- do-i-return-the-response-from-a-асинхронный вызов) –

+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

Все, что вы сделали, это своп-стенография для longhand. Он не решает проблему вообще. –

+0

не имеет значения, разрешает ли он проблему .. и, кстати, у нее больше опций, которые вы можете передать. –

+0

Это не решает проблему, хотя, и если вам не нужно передавать эти параметры, это то, что нужно для сокращения. –