kzpromo
@kzpromo
Yii2 Framework Developer

Почему функция не возвращает массив?

Добрый день, помогите решить проблему, суть в следующем, пытаюсь установить массив дат при загрузке, но почему-то функция возвращает undefined

var array = new Array();
   
    function load_reservation(stock, year = null, month = null){
      
        $.post( "'.Url::to(['site/ajax-load-reservation']).'", { "stock": stock, "year": year, "month": month }, function( data ) {
            
            if(data.result==1){
                    return data.array;                
                }
                else return [];
        }, "json");
    }

    $(".book").each(function(){
        var id = $(this).attr("data-stock_id");
        array[id] = load_reservation(id);
        
        console.log(array[id]);
    });


php возвращает массив в json формате
мне нужно чтобы данные загрузились в массив var array

Заранее благодарен
  • Вопрос задан
  • 220 просмотров
Решения вопроса 1
Функция у вас ничего и не возвращает. Тут асинхронность. В $.post вызывайте callback с результатами.

var array = [];

function load_reservation(stock, year, month, callback) {

    $.post("'.Url::to(['site/ajax-load-reservation']).'", {"stock": stock, "year": year, "month": month}, function (data) {

        if (data.result == 1) {
            callback(data.array);
        }
        else callback([]);
    }, "json");
}

$(".book").each(function () {
    var id = $(this).attr("data-stock_id");
    load_reservation(id, null, null, function (result) {
        array[id] = result;
        console.log(array[id]);
    });
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы