Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Фунцкия is not defined (https://javascript.ru/forum/misc/32448-funckiya-not-defined.html)

xtype4u 16.10.2012 18:15

Фунцкия is not defined
 
Здравствуйте! Только начал изучать javascript и напоролся на такой тупиковый момент) Вообще начал одно из упражнений из курса по AJAX. Вот код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru" dir="ltr">
<head>
	<title>Лабораторная работа 1</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="Content-Language" content="ru" />
	<script type="text/javascript" src="/xmlhttprequest.js" />
	<script type="text/javascript">
		/*
		** Задание 1: Напишите функцию создания объекта XmlHttpRequest
		**     function getXmlHttpRequest()
		*/
		req = getXmlHttpRequest();
		
		/*
		** Задание 2: Напишите Функцию (функции) запроса к серверу (getbooktxt.php), 
		** которая АСИНХРОННО запрашивает нужную книгу по номеру (getbooktxt.php?num=1)
		** и выводит строку с названием этой книги в элемент divResult HTML страницы
		**     function getBookByNumber(number)
		*/
		function getBookByNumber(number) {
			req.send("GET", "getbooktxt.php?num=" + number, true);
			req.onreadystatechange = function {
				if (req.readyState == 4) {
					return req.responseText;
				}
			}
			return false;
		}

		
		/*
		** Задание 3: Напишите код обработчика нажатия на кнопку
		** Эта функция должна прочитать введенное значение в поле txtNum
		** и вызвать функцию getBookByNumber(value)
		**     function showBook()
		*/ 
		function showBook() {
			numb = document.getElementById('txtNum').value;
			document.getElementById("divResult").innerHTML = getBookByNumber(numb);
			return true;
		}
	</script>
</head>
<body>
	<h1>Лабораторная работа 1</h1>
	<form onsubmit="return false">
		<label for="txtNum">Введите номер книги:</label>
		<input id="txtNum" type="text" />
		<!-- Задание 4: не забудьте поставить обработчик нажатия -->
		<button onclick="showBook()">Поиск</button>
	</form>
	<div id="divResult">&nbsp;</div>
</body>
</html>


Собственно это недописанный скрипт - ошибка вылетает сразу же при нажатии на кнопку и вызове функции showBook() - якобы функция не определена. В чем моя ошибка?

BallsShaped 16.10.2012 18:26

Во-первых, используй локальные переменные. Например, numb должна определяться с оператором var. Во-вторых, getBookByNumber всегда будет возвращать false, я гарантирую это.
Как ты думаешь, в какое место будет возвращать значение вот эта функция:
req.onreadystatechange = function {
    if (req.readyState == 4) {
        return req.responseText;
    }
}

xtype4u 16.10.2012 19:51

Цитата:

Сообщение от BallsShaped (Сообщение 210572)
Во-первых, используй локальные переменные. Например, numb должна определяться с оператором var. Во-вторых, getBookByNumber всегда будет возвращать false, я гарантирую это.
Как ты думаешь, в какое место будет возвращать значение вот эта функция:
req.onreadystatechange = function {
    if (req.readyState == 4) {
        return req.responseText;
    }
}

Понял, спасибо! Эти моменты есть, но вот беда с якобы не декларированной функцией не уходит.

lord2kim 16.10.2012 20:39

xtype4u, как минимум у вас тег </script> не закрыт на 7 строке вместо<script />
также вместо 23 строки
req.onreadystatechange = function {

нужно
req.onreadystatechange = function () {

xtype4u 16.10.2012 20:57

Цитата:

Сообщение от lord2kim (Сообщение 210599)
xtype4u, как минимум у вас тег </script> не закрыт на 7 строке вместо<script />
также вместо 23 строки
req.onreadystatechange = function {

нужно
req.onreadystatechange = function () {

спасибо! причиной был незакрытый тэг)

Hoshinokoe 16.10.2012 22:52

xtype4u,

Поставь себе любой редактор для javascript (например WebStorm) и подобные ошибки он будет подсвечивать.

Salvat 24.04.2016 13:47

<form id='submit_wall' ounsubmit='submit()' action='javascript:void(null);'>
												<p><input type='text' name='comment' id='".$rs_info['id']."' value=''  /></p>
												<p> <input type='hidden' name='messageid' id='".$rs_info['id']."' value='".$rs_info['id']."'></p>";
												
												  $stena_group .='<p><input type="submit" value="send"/> </p>

Вывести, спрашивали в том посте. Принять POST и так же как у меня чтобы отобразилось только сообщения после нажатия или по ссылке или по кнопке на странице.

Salvat 24.04.2016 13:50

Hoshinokoe,
На Linux есть аналог? Что-то не вижу пока.


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