Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.08.2009, 19:59   #1
PheonixS
Пользователь
 
Аватар для PheonixS
 
Регистрация: 09.08.2009
Сообщений: 10
Злость Помощь с объектами в AJAX

Уже 2 дня не могу разобраться с объектами пишет null или не является объектом !

Код:
var file = "checker.php";
var debugMode = true;
var xmlHttp = createXmlHttpRequestObject();

function createXmlHttpRequestObject(){
	
	var xmlHttp;
	
	try{
		xmlHttp = new XMLHttpRequest();
		
	}catch(e){
		var xmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0", 
										"MSXML2.XMLHTTP.5.0", 
										"MSXML2.XMLHTTP.4.0", 
										"MSXML2.XMLHTTP.3.0",
										"MSXML2.XMLHTTP", 
										"Microsoft.XMLHTTP");
		for(var i=0;i<xmlHttpVersions.length && !xmlHttp;i++){
			try{
				xmlHttp = new ActiveXObject(xmlHttpVersions[i]);
			}catch(e){}
		}
	}
	if(!xmlHttp)alert("'xmlHttp' not set !");
	else return xmlHttp;
}

function process(id, value){
	if(xmlHttp){
		if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0){
					try{
						var params = "fieldID=" + id + "&fieldValue=" + value;
						if(id != "" && value != "" && params.length > 0){
							xmlHttp.open("POST", file, true);
							xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
							xmlHttp.onreadystatechange = handleserverresponse;
							xmlHttp.send(params);
						}else if(debugMode) alert("Params not set !");
					}catch(e){
						error_handler(e.toString());	
					}
		}else if(debugMode) alert("'xmlHttp' not ready");
	}
}

function handleserverresponse(){
	if(xmlHttp){
		if(xmlHttp.readyState == 4){
			if(xmlHttp.status == 200){
				try{
					var error = xmlHttp.responseText;
					if(error.indexOf("ERRNO:") > 0 || error.indexOf("error") > 0 || error.length == 0){
						throw(error.length == 0 ? "Request from server empty !" : error);
					}
					//var xml = xmlHttp.responseXML.documentElement.firsChild.data;
					alert(error);
					
				}catch(e){
					error_handler(e.toString());
				}
			}else setTimeout("process()", 250);
		}
	}
}

function error_handler($error){
	if(debugMode){
		debugMode = false;
		alert($error);
	}
}
а вот и скрипт PHP
PHP код:
include_once("checker.class.php");
$checker = new checker;

$fieldID = $_POST['fieldID'];
$fieldValue = $_POST['fieldValue'];
if($fieldID == "" || $fieldValue == "")exit;

header("Content-type:  text/xml");

$xml = '<?xml version="1.0" encoding="windows-1251" ?>'.
        '<result>'.
            "<fieldID>".
                "<![CDATA[".$fieldID."]]>".
            "</fieldID>".
            "<fieldValue>".
                $checker->select($fieldID, $fieldValue).
            "</fieldValue>".
        "</result>";
        
echo $xml;
ну если кому поможет вот генерируемый код

Код:
<?xml version="1.0" encoding="windows-1251" ?> 
<result>
  <fieldID>
     <![CDATA[ username ]]> 
  </fieldID>
    <fieldValue>
      <![CDATA[ ok  ]]> 
  </fieldValue>
  </result>

Последний раз редактировалось PheonixS; 10.08.2009 в 13:56.
PheonixS вне форума Ответить с цитированием
Старый 09.08.2009, 20:16   #2
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Вот к чему приходится принуждать себя, когда не знаешь, что есть jQuery.
SkyM@n вне форума Ответить с цитированием
Старый 09.08.2009, 21:11   #3
sa_t_an
Пользователь
 
Регистрация: 27.04.2008
Сообщений: 38
По умолчанию

А что вы пытаетесь сделать? Вам надо отобразить через Ajax именно xml данные или просто ответ сервера?

Вообще для работы с JavaScript поставте FireFox и плагин к нему FireBug и тогда будете видеть в дебуггере ошибки и строки в которых вызывается ошибка...
sa_t_an вне форума Ответить с цитированием
Старый 09.08.2009, 23:39   #4
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,239
По умолчанию

В Opera:
__ Инструменты - Настройки - Содержимое - Параметры JavaScript - (выбираем что нужно. Например: "Открывать консоль при ошибке")
Alter вне форума Ответить с цитированием
Старый 10.08.2009, 11:51   #5
PheonixS
Пользователь
 
Аватар для PheonixS
 
Регистрация: 09.08.2009
Сообщений: 10
По умолчанию

1)Я знаю что есть jQuery, но хочу написать вручную
2)Я пытаюсь вывести ответ с сервера с помощью XML
3)ну и чё давно Оперой пользуюсь, и она и эксплорер пишет result есть null или не является объектом !(Строка result = xml.getElementsByTagName("fieldID")[0].firstChild.data

Последний раз редактировалось PheonixS; 10.08.2009 в 12:07.
PheonixS вне форума Ответить с цитированием
Старый 10.08.2009, 12:05   #6
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

А что дальше планируется с этим ответом делать?
SkyM@n вне форума Ответить с цитированием
Старый 10.08.2009, 12:09   #7
PheonixS
Пользователь
 
Аватар для PheonixS
 
Регистрация: 09.08.2009
Сообщений: 10
По умолчанию

сравнить если value != "ok" , то изменить стиль окна на disply:block
PheonixS вне форума Ответить с цитированием
Старый 10.08.2009, 13:04   #8
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,714
По умолчанию

Код:
result = xml.getElementsByTagName("fieldID")[0].firstChild.data;
поробуйте

Код:
result = xmld.getElementsByTagName("fieldID")[0].firstChild.nodeValue;
Ваш код может не работать по целому набору причин
Стрелок-охотник
mv28jam вне форума Ответить с цитированием
Старый 10.08.2009, 13:34   #9
PheonixS
Пользователь
 
Аватар для PheonixS
 
Регистрация: 09.08.2009
Сообщений: 10
По умолчанию

ну в одном я разобрался нужно было посылать заголовок
xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

mv28jam не робит есть null

оч странно, а responseText выводит то, что нужно !

Последний раз редактировалось PheonixS; 10.08.2009 в 13:56.
PheonixS вне форума Ответить с цитированием
Старый 10.08.2009, 14:02   #10
PheonixS
Пользователь
 
Аватар для PheonixS
 
Регистрация: 09.08.2009
Сообщений: 10
По умолчанию

УРАААААААА!Заработало, нужно было такую пакость сделать !!!!
Код:
xml_root = xmlHttp.responseXML.documentElement;
					xml_element = xml_root.getElementsByTagName("fieldID")[0].firstChild.data;
					alert(xml_element);
PheonixS вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с объектами Word в C++ Ладушка Общие вопросы C/C++ 3 22.09.2015 16:51
Работа с классами и объектами Shavminator Общие вопросы Delphi 7 18.12.2009 04:11
Управление динамическими объектами по Handle SibBear Общие вопросы Delphi 3 17.03.2009 19:12
задачка с объектами LyaLyaLya Помощь студентам 9 09.01.2009 02:02
нужна помощь - работа с объектами и не только freemotivation Паскаль, Turbo Pascal, PascalABC.NET 6 22.11.2008 01:29