Javascript.RU

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

AJAX вопрос от чайника
Привет! Изучаю чистый ajax, вот поставил перед собой задание, пишу проверку доменов, суть в чем в полу вводим домен(напрмер rambler.ru), а ниже этого поля в див ввыводиться результат(результат обрабатываеться файлом whois.php), пока идет запрос внизу должна показываться прелоадер, для реализации взял книгу и попытался написать но у меня не получилось про помочь , исходники вложил, если можно будет кратко что не так было....
Вложения:
Тип файла: zip whois.zip (4.3 Кб, 2 просмотров)

Последний раз редактировалось vova_b, 12.09.2009 в 15:18.
Ответить с цитированием
  #2 (permalink)  
Старый 12.09.2009, 17:40
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от vova_b
// JavaScript Document
var xmlHttp=createXmlHttpRequestObject();
function createXmlHttrRequestObject();
{
	var xmlHttp;
	if(window.ActiveXObject)
	{
		try
		{
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(e)
		{
			xmlHttp=false;
		}
	}
	else
	{
		try
		{
			xmlHttp=new XMLHttpRequest();
		}
		catch(e)
		{
			xmlHttp=false;
		}
	}
	if(!xnlHttp)
	alert("ERROR");
	else
	return xmlHttp;
	
	functio process()
	{
		if(xmlHttp.readyState==4 || xmlHttp.readyState==0)
		{
			url=encodeURIComponent(document.getElementById("url").value)
			xmlHttp.open("GET","whois.php?url=" + url, true);
			xmlHttp.onreadystatechange=handleServerRespone;
			xmlHttp.send(null);
		}
		else
		setTimeout('process()',1000);
	}
	function handleServerRespone()
	{
		var url2=document.getElementById("url2");
		while(xmlHttp.readyState!=4)
		{
			url2.innerHTML+="<img src="ajax-loader.gif" width="20" height="17">";
		}
		if(xmlHttp.readyState==4)
		{
			try
			{
				respone=xmlHttp.responeText;
				url2.innerHTML+=respone;
			}
			catch(e)
			{
				alert("ERROR");
			}
			
		
		}
	}
}

С JavaScript-частью все плохо:
if(!xnlHttp)
	alert("ERROR");
	else
	return xmlHttp;
Вы же этим самым выходите из функции createXmlHttrRequestObject, и в любом случае никакие
functio process()
написанные с ошибкой, ни
function handleServerRespone()
не будут доступны в глобальной области видимости, так как вы их внутри createXmlHttrRequestObject написали.

Последний раз редактировалось Octane, 12.09.2009 в 17:49.
Ответить с цитированием
  #3 (permalink)  
Старый 12.09.2009, 18:32
Аспирант
Отправить личное сообщение для vova_b Посмотреть профиль Найти все сообщения от vova_b
 
Регистрация: 01.09.2009
Сообщений: 40

вот я подправил:
// JavaScript Document
var xmlHttp=createXmlHttpRequestObject();
function createXmlHttpRequestObject()
{
	var xmlHttp;
	if(window.ActiveXObject)
	{
		try
		{
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(e)
		{
			xmlHttp=false;
		}
	}
	else
	{
		try
		{
			xmlHttp=new XMLHttpRequest();
		}
		catch(e)
		{
			xmlHttp=false;
		}
	}
	if(!xmlHttp)
	alert("ERROR");
	else
	return xmlHttp;
}

	function process()
	{
		if(xmlHttp.readyState==4 || xmlHttp.readyState==0)
		{
			url=encodeURIComponent(document.getElementById("url").value)
			xmlHttp.open("GET","whois.php?url=" + url, true);
			xmlHttp.onreadystatechange=handleServerRespone;
			xmlHttp.send(null);
		}
		else
		setTimeout('process()',1000);
	}
		
	function handleServerRespone()
	{
		url2=document.getElementById("url2");
		while(xmlHttp.readyState!=4)
		{
			url2.innerHTML+="<img src="ajax-loader.gif" width="20" height="17">";
		}
		if(xmlHttp.readyState==4)
		{
			try
			{
				respone=xmlHttp.responeText;
				url2.innerHTML+=respone;
			}
			catch(e)
			{
				alert("ERROR");
			}
			
		
		}
	}

Но всеравно не рабоатет
Ответить с цитированием
  #4 (permalink)  
Старый 12.09.2009, 19:00
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Почитайте xmlhttprequest.ru, у вас какая-то каша с контролем readyState.
Ответить с цитированием
  #5 (permalink)  
Старый 12.09.2009, 19:08
Аспирант
Отправить личное сообщение для vova_b Посмотреть профиль Найти все сообщения от vova_b
 
Регистрация: 01.09.2009
Сообщений: 40

почитал, но не какой каши не увидел, мож я что то нето в других файлах сделал?
Ответить с цитированием
  #6 (permalink)  
Старый 12.09.2009, 19:35
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от vova_b
url2.innerHTML+="<img src="ajax-loader.gif" width="20" height="17">";
Кавычки неправильно расставлены.

Разбираться в куче ваших readyState нет желания, если я правильно понял, что весь ваш код делает, то можно переписать как-то так:
function process() {
	var url2 = document.getElementById("url2");
	url2.innerHTML += '<img src="ajax-loader.gif" width="20" height="17">';
	var url = encodeURIComponent(document.getElementById("url").value);
	var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
	xhr.open("GET", "whois.php?url=" + url, true);
	xhr.send(null);
	(function() {
		if(xhr.readyState == 4) {
			if(xhr.status == 200) {
				url2.innerHTML = xhr.responeText;
			} else {
				alert(xhr.statusText);
			}
		} else {
			setTimeout(arguments.callee, 20);
		}
	}());
}
на работоспособность не проверял, писал прямо на форум
Ответить с цитированием
  #7 (permalink)  
Старый 12.09.2009, 19:52
Аспирант
Отправить личное сообщение для vova_b Посмотреть профиль Найти все сообщения от vova_b
 
Регистрация: 01.09.2009
Сообщений: 40

да так работает токо одно но, страницу приходиться вручную перезагружать!
Ответить с цитированием
  #8 (permalink)  
Старый 12.09.2009, 20:03
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

зачем ее перезагружать?
Ответить с цитированием
  #9 (permalink)  
Старый 12.09.2009, 20:07
Аспирант
Отправить личное сообщение для vova_b Посмотреть профиль Найти все сообщения от vova_b
 
Регистрация: 01.09.2009
Сообщений: 40

ну вот я ввел домен например rambler.ru ниче не показало, а если я затем нажл обновить страницу то после обновления вывело информацию........
Ответить с цитированием
  #10 (permalink)  
Старый 12.09.2009, 22:04
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

После обновления должна исходная страница отображаться, не знаю что у вас там происходит, покажите страницу.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ajax ограничение по расширениям фото. t0xas AJAX и COMET 8 13.08.2009 11:29
Проблема с AJAX запросом + mod_rewrite BrokenEye AJAX и COMET 1 12.07.2009 02:08
AJAX для ЧАЙНИКОВ (вопросы) sc2r2bey AJAX и COMET 16 10.07.2009 21:23
AJAX и history браузера Shasoft jQuery 5 25.06.2009 16:22
Объясните как вызывается ajax скрипт AddressBook из формы prog90 AJAX и COMET 3 06.06.2009 16:12