Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.03.2015, 12:58
Новичок на форуме
Отправить личное сообщение для WoWa Посмотреть профиль Найти все сообщения от WoWa
 
Регистрация: 22.03.2015
Сообщений: 7

Синхронный запрос возвращает NULL, почему?
Здравствуйте, начал делать лабу курса Специалист AJAX, но запрос не работает у меня - в видосе то у них все ок. Может Денвер нужно как-то спецом настроить?

Windows 8.1, Denwer 3 (PHP 5.3.13, MySQL 5.1, PostgreSQL 8.4 etc.) - я его просто установил, запустил и все.

Браузеры говорят "req is NULL", IE говорит:


Функция getXMLHttpRequest в отдельный файл вынесена, файл подключен нормально консоль говорит.

function getXmlHttpRequest(){
	if(window.XmlHttpRequest){
		try{return new XmlHttpRequest();}
		catch(e){}
	}else if(window.ActiveXObject){
		try{return new ActiveXObject("Msxml2.XMLHTTP");}
		catch(e){}
		try{return new ActiveXObject("Microsoft.XMLHTTP");}
		catch(e){}
	}
	return null;
}


Вот сам код:

// URL сценария, возвращающего время
		var url = "gettime.php?delay=3";		// Задержка в запросе:  gettime.php?delay=3
		var req = getXmlHttpRequest();


		// Синхронный запрос
		function showSyncRequest(){
			// Запрос
			req.open(GET, url, false);
			req.send(null);
			// Вывод ответа
			var res = document.getElementById("syncResult");
			res.firstChild.nodeValue = req.responseText;
		}


HTML

<h1>Синхронные и асинхронные запросы</h1>
	<div id="sync">
		<h2>Синхронный запрос</h2>
		<div id="syncResult" class="result">Здесь будет время</div>
		<button onclick="showSyncRequest()">Пробуем!</button>
	</div>


Ну и на всякий случай сам пхп.
<?php
/*
** Сценарий возвращает текущее время
*/

// Установка типа данных и кодировки
header("Content-type", "text/plain; charset=utf-8");

// Чтение параметра задержки и задержка в коде
if (isset($_GET["delay"])){
	$delay = abs((int) $_GET["delay"]);
	$currTime = time();
	while (time() < $currTime + $delay) {}
}

// Текущее время
echo date("H:i:s");
?>

Последний раз редактировалось WoWa, 22.03.2015 в 13:06.
Ответить с цитированием
  #2 (permalink)  
Старый 22.03.2015, 15:31
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

req.open(GET, url, false);

Что за переменная GET? Мб ты имел в виду строку "GET"?
Ответить с цитированием
  #3 (permalink)  
Старый 22.03.2015, 16:30
Новичок на форуме
Отправить личное сообщение для WoWa Посмотреть профиль Найти все сообщения от WoWa
 
Регистрация: 22.03.2015
Сообщений: 7

Да, видимо, поменял, но по прежнему "req is null"

*прошу прощения, Mozilla на файл xmlhttprequest выдал 304 not modified - и как этого избежать? IE какаха не сказал ничего.

GET http://www.js.ru/module-1/demo-2.html [HTTP/1.1 200 OK 0мс]
GET http://www.js.ru/module-1/xmlhttprequest.js [HTTP/1.1 304 Not Modified 15мс]

Последний раз редактировалось WoWa, 22.03.2015 в 16:50.
Ответить с цитированием
  #4 (permalink)  
Старый 22.03.2015, 16:47
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

>// Задержка в запросе: gettime.php?delay=3

while (time() < $currTime + $delay) {}


while (time() < $currTime + $delay) {} //это выбросить, и вместо этого
sleep((int)$_GET["delay"])) //если действительно хотите наблюдать задержку
Ответить с цитированием
  #5 (permalink)  
Старый 22.03.2015, 17:10
Новичок на форуме
Отправить личное сообщение для WoWa Посмотреть профиль Найти все сообщения от WoWa
 
Регистрация: 22.03.2015
Сообщений: 7

Дело в том, что в более простом примере этот же xmlhttprequest.js выдает 304. Дело тут не в задержке как я понимаю.

function showDemoSample(){
			// Адрес текущей страницы
			var url = location.href;
			// Объект XMLHttpRequest
			var req = getXmlHttpRequest();
			// Запрос на сервер
			req.open("GET", url, false);
			// Чтение ответа
			req.send(null);
			alert(req.responseText);
		}
Ответить с цитированием
  #6 (permalink)  
Старый 22.03.2015, 17:33
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Да, не в задержке, просто в ее качестве мягко говоря используется глупость у вас описанная.

А как работает асинхронный запрос и как получать ответ, это надо просто прочесть. Так как вы это делаете, не катит.
Ответить с цитированием
  #7 (permalink)  
Старый 22.03.2015, 17:50
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

laimas,
Цитата:
А как работает асинхронный запрос и как получать ответ, это надо просто прочесть.
Автору нужен синхронный.
Ответить с цитированием
  #8 (permalink)  
Старый 22.03.2015, 17:53
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

А, виноват, даже и не вникал, редкость )
Ответить с цитированием
  #9 (permalink)  
Старый 22.03.2015, 18:05
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

laimas,
честно говоря, мне кажется, что автор запутался. Ну, кому нужно блочить весь интерфейс пользователя, тем более в сетевом приложении?)
Ответить с цитированием
  #10 (permalink)  
Старый 22.03.2015, 18:08
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Может быть, я же говорю, что даже не вникал в это, ибо нафик это надо.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переопределить функции .childElements rikitikitavi Events/DOM/Window 2 18.03.2011 21:44
Чем занимаются JS-программеры. JSTalker Оффтопик 69 02.02.2011 10:18
Почему document.getElementById возвращает null FreeStyler Общие вопросы Javascript 4 08.06.2010 14:56
Почему match() возвращает значение undefined yolka Events/DOM/Window 2 24.04.2010 15:09
Удалить ряд символов перед или после курсора до определенного сивола brd Javascript под браузер 3 30.10.2009 08:20