Проблема заключается в том, что вы делаете асинхронный вызов (запрос AJAX), поэтому ваш JavaScript продолжается и не ждет ответа на вызов.
Таким образом, вызов get_label_pic()
совсем не займет времени, и ваш код перейдет прямо к console.log(labeled_pic)
(который еще не будет установлен, поскольку обратный вызов success
в вашем вызове AJAX не будет иметь завершено.
Если вы хотите нам это сделать, тогда вам нужно поместить свой код в свой успех AJAX или вызвать из него другую функцию:
function get_label_pic(){
$.ajax({
url: "localhost/advanceSearch/index/getlabelpic",
type: "POST",
dataType: "json",
success: function(data) {
$.each(data, function(key, data){
labeled_pic[key] = data;
});
testing = "testing";
console.log(labeled_pic); // this will show the values
callmyOtherFunction(); // To call something else
}
});
};
get_label_pic();
console.log(labeled_pic); // This will be undefined
На самом деле происходит следующее:
- Создает функцию get_label_pic
- Звонки
get_label_pic()
- Делает запрос Ajax
- Звонки
console.log
- Сценарий в конце
- Проходит некоторое время, затем ответ сервера возвращается
- Итерация по данным, установка
labeled_pic[key]
- Наборы
testing = 'testing'
- Звонки
console.log(labeled_pic);
- Звонки
callmyOtherFunction()