Как скачать текстовый файл и сохранить как строку в jQuery - PullRequest
0 голосов
/ 31 января 2011

У меня есть набор текстовых файлов, представляющих таблицу данных от третьей стороны, которую я хотел бы загрузить с помощью приложения JavaScript.Они выглядят примерно так:

col1 col2 .. coln
vala valb .. valz
valA valB .. valZ
etc..

Я пытался использовать jQuery для этого.Я смог использовать $ .load, но я не хочу хранить данные в DOM, вместо этого я бы хотел разобрать их в объект.Всякий раз, когда я пытаюсь использовать один из методов ajaxy, я получаю ошибку, которую не понимаю.Например:

var myData;
$.ajax({
    type: 'GET',
    url: $(this).attr('source'),
    dataType: 'html',
    success: function(data) {
        myData = data;
    }
});
alert(myData);

Дает мне значение undefined для myData.Любые предложения будут оценены.

1 Ответ

5 голосов
/ 31 января 2011

Чтобы этот код работал, событие должно быть syncrounus, другими словами, установите async: false в вызове $ .ajax.Проблема возникает из-за того, что ajax обычно является асинхронным, то есть, когда вы делаете предупреждение, запрос может или не может быть завершен.Обычно, однако, это не приведет к тому, что загрузка страницы займет больше времени, чем вызов функции.Итак, установив async: false, вы сообщаете jquery (и обработчику ajax) дождаться окончания загрузки страницы, прежде чем пытаться предупредить данные.Другой метод достижения того же эффекта - сделать что-то вроде этого:

var myData;
function fin(data) {
    myData = data;
    alert(myData);
}
$.ajax({
    type: 'GET',
    url: $(this).attr('source'),
    dataType: 'html',
    success: fin
});

Этот подход, вероятно, лучше, чем установить async в false, потому что он не заставит браузер зависать при ожидании страницыпогрузка.Тем не менее, асинхронное программирование не так легко изучить, поэтому многим будет проще использовать async: false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...