Я думаю, что это то, что вы имели в виду:
$(document).ready(function() {
var questions = [];
$.getJSON("http://localhost:8080/audioMillionaire/test2.php", function(result) {
$.each(result, function(i, item) {
questions.push([result[i].qid, result[i].description, result[i].a]);
});
});
});
Если нет, пожалуйста, комментарии.
Edit: BenM был быстрее
Edit:
Это работает хорошо, но я не могу использовать массив за пределами $ .getJSON
Это потому, что вы, вероятно, с помощью код выглядит следующим образом:
...
questions.push([result[i].qid, result[i].description, result[i].a]);
});
});
console.log(questions);
Поскольку javascript является асинхронным языком, консольный вход в журнал происходит до того, как запрос был запрошен. Вы можете узнать больше об этом here.
$(document).ready(function() {
console.log("set test to old");
var test = "old";
setTimeout(function() {
console.log("set test to new");
test = "new";
console.log("inside timeout: " + test);
}, 3000); // runs in 3 seconds
console.log("outside timeout: " + test);
});
Этот код должен служить хорошим примером. Функция setTimeout просто ждет 3 секунды и запускает функцию (как и запрос json).
Зная это, вы должны найти решение самостоятельно (например, вызывать переданную функцию после того, как массив был нажат). Если не комментировать.
Редактировать: ссылка на другую, лучшая страница.
В вашем примере 'questionJ' является строкой. Пожалуйста, покажите нам свою функцию 'setArray()'. – BenM