Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 04.01.2014, 23:40
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Упростил твой код:

function myFunction() {
   // тут создаются какие-то объекты, не важно...
}

document.getElementById("myID").innerHTML = myFunction();


Раз функция ничего не возвращает, то откуда чему-то взяться, кроме как undefined?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #12 (permalink)  
Старый 05.01.2014, 00:15
Аватар для Vikky
Интересующийся
Отправить личное сообщение для Vikky Посмотреть профиль Найти все сообщения от Vikky
 
Регистрация: 31.12.2013
Сообщений: 14

Сообщение от danik.js Посмотреть сообщение
Упростил твой код:

function myFunction() {
   // тут создаются какие-то объекты, не важно...
}

document.getElementById("myID").innerHTML = myFunction();


Раз функция ничего не возвращает, то откуда чему-то взяться, кроме как undefined?
Хм.. так как вернуть в моей функции xmlHttp.responseText ? Кроме как вот так - больше никак не получилось..

JS:
...
function myFunction() {
	var xmlHttp = getXmlHttp();
	var params = "count=" + document.location.href;
	xmlHttp = new XMLHttpRequest();
	xmlHttp.open("POST", "counter.php", true);
	xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xmlHttp.send(params);
	xmlHttp.onreadystatechange = function() {
		if (xmlHttp.readyState !== 4) return;
		if (xmlHttp.status == 200) {
			document.getElementById("myID").innerHTML = xmlHttp.responseText;
		}
	}
}

HTML:
<script>
window.onload = function() { 
	myFunction(); // типа того.. не суть, просто с загрузкой страницы запускать функцию
}
</script>

<div id="myID"></div>

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

Последний раз редактировалось Vikky, 05.01.2014 в 00:21.
Ответить с цитированием
  #13 (permalink)  
Старый 05.01.2014, 00:47
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Vikky
Хм.. так как вернуть в моей функции xmlHttp.responseText ? Кроме как вот так - больше никак не получилось..
Да, примерно так. А через return никак, потому что xhr запрос происходит асинхронно, то есть он не блокирует поток, а выполняется параллельно, следовательно функция не будет висеть и ждать результата, а значит и вернуть она ничего не может (как она тебе вернет результат из будущего?)
Сообщение от Vikky
При этом всё равно на доли секунды показывается undefined, а уже потом данные из БД..
Дык ты убери сам же присваиваешь undefined (тот что возвращает функция myFunction). Убери присвоение просто.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #14 (permalink)  
Старый 05.01.2014, 00:49
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Vikky
var xmlHttp = getXmlHttp();
удали строчку, она не нужна. и функцию getXmlHttp удали - она нужна была раньше, когда был актуален IE6-7. Только var не потеряй.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #15 (permalink)  
Старый 05.01.2014, 01:26
Аватар для Vikky
Интересующийся
Отправить личное сообщение для Vikky Посмотреть профиль Найти все сообщения от Vikky
 
Регистрация: 31.12.2013
Сообщений: 14

Сообщение от danik.js Посмотреть сообщение
Дык ты убери сам же присваиваешь 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 Посмотреть сообщение
Только var не потеряй.
Что-то типа этого?
var xmlHttp = new XMLHttpRequest();

Последний раз редактировалось Vikky, 05.01.2014 в 01:39.
Ответить с цитированием
  #16 (permalink)  
Старый 05.01.2014, 09:17
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от danik.js
document.getElementById("myID").innerHTML = myFunction();
Вот эту строчку удали. Оставь из нее только вызов myFunction()
Зачем ты пустоту (результат вызова myFunction() присваиваешь в innerHTML ?) Отсюда и undefined был.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #17 (permalink)  
Старый 05.01.2014, 09:43
Аватар для Vikky
Интересующийся
Отправить личное сообщение для Vikky Посмотреть профиль Найти все сообщения от Vikky
 
Регистрация: 31.12.2013
Сообщений: 14

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

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

Последний раз редактировалось Vikky, 05.01.2014 в 09:49.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
javascript + mysql вывод данных frixer Общие вопросы Javascript 1 22.08.2012 10:40
Вывод данных из базы в цикле со ссылкой на всплывающее окно alexvb Events/DOM/Window 14 10.02.2012 16:16
обновление и вывод из базы данных sarkis AJAX и COMET 1 02.12.2011 04:37
Вывод данных в Друпал 6 из MySQL, небольшая работа torquemada Работа 1 22.05.2011 17:05
Вывод данных из mysql Евген AJAX и COMET 3 22.08.2010 17:55