Проблема заключается в том, что userIdD
устанавливается асинхронно. Вещь, которая происходит внутри вызова функции, происходит после материала вне вызова функции.
Вот упрощенный пример, который вы можете запустить:
$.get('http://jsonplaceholder.typicode.com', function(){
alert('Stuff inside function happening');
});
alert('Stuff outside function happening');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Теперь, если мы посмотрим на код, мы увидим, что вы пытаетесь console.log переменные, установлены внутри вызов функции.
Чтобы обойти асинхронность, вы можете использовать обещания. Давайте посмотрим, как это работает ...
var valuesPromise = $.get('http://jsonplaceholder.typicode.com').then(function(serverResponse){
return { objectId: 123 }; // return stuff you want to use later
});
// later in your code, you can make use of the returned value...
valuesPromise.then(function(returnedValue){
alert(returnedValue.objectId); // alerts '123'
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Возможный дубликат [Как вернуть ответ от асинхронного вызова?] (Http://stackoverflow.com/questions/ 14220321/how-do-i-return-the-response-from-a-асинхронный вызов) –