@eternal_blue

Почему ajax работает не так, как ожидалось?

Знакомлюсь с аяксом вот тут, конкретно с функцией fetch(). Представленный в уроке способ преобразования полученных данных в текст меня разочаровал(возможно этот способ не единственный, но других я пока не знаю):
let promise = fetch(ajax.html);
    promise.then(
		response => {
			return response.text();
		}
	).then(
		text => {
			document.getElementById(result).innerHTML = text;
		}
	);

Чтобы каждый раз не прописывать эту тягомотину, я подключил в head файл easy_fetch.js с таким скриптом:
function ajaxto(adress, elem) { //функция, которая берет аякс по адресу в adress и ложит в элемент с id elem
   let promise = fetch(adress);
    promise.then(
		response => {
			return response.text();
		}
	).then(
		text => {
			document.getElementById(elem).innerHTML = text;
		}
	);
}

Собственно, вопрос. Такая конструкция:
button.addEventListener('click', ajaxto('ajax.html' , 'result') );

при загрузке сразу же исполняла код, и в окне result появлялось содержимое без клика. Поменял, установил атрибут onclick элемента result на выполнение той функции, и все как надо заработало, при клике. Это какие-то подводные у addEventListener?
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
E1ON
@E1ON Куратор тега JavaScript
Programming, Gamedev, VR
Ну так у вас функция стразу вызывается, что бы она вызвалась только при событии, её нужно писать без скобок либо выполнять её в анонимной функции
button.addEventListener('click', () => ajaxto('ajax.html' , 'result') );
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы