Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Асинхронный вывод данных из базы MySQL (https://javascript.ru/forum/misc/44056-asinkhronnyjj-vyvod-dannykh-iz-bazy-mysql.html)

danik.js 05.01.2014 00:47

Цитата:

Сообщение от Vikky
Хм.. так как вернуть в моей функции xmlHttp.responseText ? Кроме как вот так - больше никак не получилось..

Да, примерно так. А через return никак, потому что xhr запрос происходит асинхронно, то есть он не блокирует поток, а выполняется параллельно, следовательно функция не будет висеть и ждать результата, а значит и вернуть она ничего не может (как она тебе вернет результат из будущего?)
Цитата:

Сообщение от Vikky
При этом всё равно на доли секунды показывается undefined, а уже потом данные из БД..

Дык ты убери сам же присваиваешь undefined (тот что возвращает функция myFunction). Убери присвоение просто.

danik.js 05.01.2014 00:49

Цитата:

Сообщение от Vikky
var xmlHttp = getXmlHttp();

удали строчку, она не нужна. и функцию getXmlHttp удали - она нужна была раньше, когда был актуален IE6-7. Только var не потеряй.

Vikky 05.01.2014 01:26

Цитата:

Сообщение от danik.js (Сообщение 290602)
Дык ты убери сам же присваиваешь undefined (тот что возвращает функция myFunction). Убери присвоение просто.

Так, что ли?

...
function myFunction() {
	...
	xmlHttp.onreadystatechange = function() {
		if (xmlHttp.readyState !== 4) return;
		if (xmlHttp.status == 200) {
			document.getElementById("myID").innerHTML = xmlHttp.responseText;
		}
	}
	return 0;
}


Цитата:

Сообщение от danik.js (Сообщение 290602)
Только var не потеряй.

Что-то типа этого?
var xmlHttp = new XMLHttpRequest();

danik.js 05.01.2014 09:17

Цитата:

Сообщение от danik.js
document.getElementById("myID").innerHTML = myFunction();

Вот эту строчку удали. Оставь из нее только вызов myFunction()
Зачем ты пустоту (результат вызова myFunction() присваиваешь в innerHTML ?) Отсюда и undefined был.

Vikky 05.01.2014 09:43

Цитата:

Сообщение от danik.js (Сообщение 290617)
Вот эту строчку удали. Оставь из нее только вызов myFunction()
Зачем ты пустоту (результат вызова myFunction() присваиваешь в innerHTML ?) Отсюда и undefined был.

Ой, спасибо! Теперь всё по полочкам и понятно :thanks:

p.s. карму, как я понимаю здешние законы, только те кто был уже с рождения JS-профи за подобный топик минусуют? ОК.


Часовой пояс GMT +3, время: 23:18.