Вот мой код:jQuery.each() и массив Манипуляция
$(document).ready(function() {
var myArray = [];
$.getJSON("some url",function(data){
$.each(data, function(){
myArray.push("a string" + this);
});
alert(myArray);
});
//alert(myArray);
});
код, как показано работает просто отлично и отображает массив и его содержимое.
Однако, когда я пытаюсь отобразить массив, имея командную строку сразу после блока кода $.each
(закомментированный в примере кода), массив и его содержимое не отображаются. Вместо этого возвращается пустое/пустое сообщение.
Почему это происходит и как я могу это исправить? Я хотел бы иметь команду «alert(myArray);
» сразу после блока $.each
.
Спасибо заранее!
Ajax является асинхронным. Вы должны использовать данные, возвращаемые внутри обратного вызова, а не снаружи. Он не может быть исправлен без перехода на 'async: false', но это ужасная идея. –
Второе предупреждение запускается до того, как json берется с сервера, поэтому он пуст. – Dementic
Это один из самых распространенных вопросов на этом сайте. См. [Этот ответ] (http://stackoverflow.com/a/14220323/778118) для получения дополнительной информации о том, что вы испытываете. – jahroy