Чтобы этот код работал, событие должно быть 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.