2015-03-10 4 views
-3
function getEvents(userid,year,week) { 
    var items = []; 
    var path = "js/test.json"; 
    $.getJSON(path).done(function(data) { 
     items = data.sessions; 
    }); 
    return items; 
} 

var list = getEvents(10,1991,13); 

Вот мой javascriot, и мне нужно получить массив для возвращения из getEvents() метода.Возвращает массив, после чтения файла JSon Javascriot

+2

Вы не можете просто вернуть данные, так как он поступает асинхронно. Вам нужно использовать какой-то асинхронный способ вернуть данные вызывающему, либо обратный вызов, либо обещание. Прочитайте асинхронное выполнение в javascript. – doldt

ответ

1

Вы должны поместить оператор возврата внутри функции .done следующим образом:

function getEvents(userid,year,week) { 
    var items = []; 
    var path = "js/test.json"; 
    $.getJSON(path).done(function(data) { 
     items = data.sessions; 
     return items; 
    }); 
} 
+0

Я сделал это. но список остается неопределенным. –

+0

-1. Этот «возврат» возвращается в тело функции getEvents (где больше нет потока управления), а не вызову getEvents (переменная списка в OP), которая должна была быть результатом. – doldt

Смежные вопросы