jQuery, выполняющий функцию внутри $(document).ready(function() {
Что я здесь не так делаю? Зачем writeQuestions
не работает под нагрузкой (не по клику..)?
$(document).ready(function() {
$.getJSON("JavaScript/questions.json", function(data) {questions = data;});
$("#start").one("click" , writeQuestions);
writeQuestions();
});
(.one()
строка закомментирована в моем коде)
Когда я делаю это:window.onload=writeQuestions;
работает нормально..
3 ответа
writeQuestions() выполняется до того, как будет возвращен результат JSON. Поместите вызов функции в функцию обратного вызова.
$(document).ready(function() {
$.getJSON("JavaScript/questions.json",
function(data) { questions = data; writeQuestions(); }
);
});
Также я бы порекомендовал обновить функцию writeQuestions(), чтобы она принимала параметр, и таким образом передавать вопросы. Я удивлен, что это когда-либо работало, так как существуют проблемы с переменным объемом
Ты пытался...
$.getJSON("JavaScript/questions.json", function(data) {
questions = data;
writeQuestions();
});
В вашем примере writeQuestions
будет вызван до getJSON
звонок вернулся.
Отредактируйте, как Фоско указал в своем ответе, вы заявляете questions
в качестве глобальной переменной здесь, так как вы не используете var
ключевое слово. Это может сработать, но это не очень хорошая практика и подвержена ошибкам. Было бы лучше переписать как:
$.getJSON("JavaScript/questions.json", function(data) {
writeQuestions(data);
});
Ваши вопросы загружены в.getJSON()? Если так, попробуйте добиться успеха
$.getJSON("JavaScript/questions.json", function(data) {
questions = data;
}).success(function() {writeQuestions();)