Javascript.RU

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

IE & AJAX
проблема в следующем:
при запуске my.html в ИЕ6, ИЕ7 и ИЕ8(бета версия) выскакивает alert с таким сообщением : [object Error].
не могу понять в чем проблема
очень надо, плз хэлп
ниже я привел скрипты


в Опере(9.62) и Мозилле(3.0.1) - всё работает нормально



my.html
<html>
	<body>
		<script type='text/javascript' src='http://localhost/redactor/my.js'></script>
		<span id='span' onclick="ajax()">спаннннн</span>
		<div id='div'>дивдвдв</div>
	</body>
</html>


my.js
var xmlHttpObject=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("Error: object XMLHttpRequest");
	}
	else
	{
		return xmlHttp;
	}
}
/********************************************************************************************************************/
function ajax()
{
    if(xmlHttpObject)
	{
	    try
	    {
		    if((xmlHttpObject.readyState==4) || (xmlHttpObject.readyState==0))
		    {
			    xmlHttpObject.open("GET","http://localhost/redactor/my.php?option=changeImgDescriptionGallery&nameImg=56_80_small.jpeg",true);
			    xmlHttpObject.onreadystatechange=handleResultChangeDescription;
			    xmlHttpObject.send(null);
			}
		}
		catch(e)
		{
		    alert("Error: connection with server \n"+e.toString);
		}
	}
}
/********************************************************************************************************************/
function handleResultChangeDescription()
{
    if(xmlHttpObject.readyState==4)
	{
		if(xmlHttpObject.status==200)
		{
			try
			{
	            response=xmlHttpObject.responseXML.documentElement;
				var imgName='';
				var imgDescription='';
                imgName=response.getElementsByTagName("nameImgGallery").item(0).firstChild.data;
                imgDescription=response.getElementsByTagName("descriptionImgGallery").item(0).firstChild.data;
	            document.getElementById('div').innerHTML="<center><input size='12' type='text' id='"+imgName+"Description' value='"+(imgDescription=='falseHoy' ? '' : imgDescription )+"'><br><span class='alink' onclick='saveDescriptionGallery(\""+imgName+"\")'>save</span>&nbsp;<span class='alink' onclick='cancelSaveDescription(\""+imgName+"\")'>cancel</span></center>";
			}
			catch(e)
			{
				alert(e.toString());
			}
		}
		else
		{
			alert("Connection problem; \n"+xmlHttpObject.statusText);
		}
	}
}


my.php
<?php
if($_POST['option']=='changeImgDescriptionGallery' || $_GET['option']=='changeImgDescriptionGallery' )
{
	if(ob_get_length()) ob_clean();
	header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
	header('Last-Modified: '.gmdate('D, d H Y H:i:s').'GMT');
	header('Cash-Control: no-cashe, must-revalidate');
	header('Pragma: no-cashe');
	header("Content-type: text/xml; charset=windows-1251");  
	$response="<response><descriptionImgGallery>фывфывфыв</descriptionImgGallery><nameImgGallery>фывфывфывфыввввввв</nameImgGallery></response>";
	echo $response;
}
?>
Ответить с цитированием
  #2 (permalink)  
Старый 15.04.2009, 23:04
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Напихайте всюду алертов, и смотрите какие не сработают.



imgDescription=response.getElementsByTagName("desc riptionImgGallery").item(0).firstChild.data;

data можно попробовать заменить на text или nodeValue.
Ответить с цитированием
  #3 (permalink)  
Старый 16.04.2009, 00:24
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

подозреваю, что срабатывает alert(e.toString());
надо это для начала проверить
Ответить с цитированием
  #4 (permalink)  
Старый 16.04.2009, 00:44
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от x-yuri
подозреваю, что срабатывает alert(e.toString());
Да по любому он. Только с первого взгляда неясно в чем ошибка. Даже если нет свойства data, то все равно должно работать.
Ответить с цитированием
  #5 (permalink)  
Старый 16.04.2009, 00:54
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Возможно нет responseXML.

Попробуйте к xml добавить в начале
<?xml version="1.0" encoding="windows-1251"?>
Ответить с цитированием
  #6 (permalink)  
Старый 16.04.2009, 03:07
HOY HOY вне форума
Новичок на форуме
Отправить личное сообщение для HOY Посмотреть профиль Найти все сообщения от HOY
 
Регистрация: 15.04.2009
Сообщений: 3

перепробовал все что можна и в конце-концов решил проблему таким кустарным способом(изменил только файл my.php)

<?php

function is_ie($name)
{
           /*проверяю броузер*/
	$is_ie = strstr($_SERVER['HTTP_USER_AGENT'], 'MSIE') ? true : false;
	if($is_ie == false)
	{
		return $name;
	}
	else
	{
		$check = iconv('windows-1251','utf-8',$name);
		return $check;
	}
}


if($_POST['option']=='changeImgDescriptionGallery' || $_GET['option']=='changeImgDescriptionGallery' )
{
    if(ob_get_length()) ob_clean();
    header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
    header('Last-Modified: '.gmdate('D, d H Y H:i:s').'GMT');
    header('Cache-Control: no-caсhe, must-revalidate');
    header('Pragma: no-cache');
    header("Content-type: text/xml; charset=windows-1251");  
    $response="<response><descriptionImgGallery>".is_ie('фывфывфыв')."</descriptionImgGallery><nameImgGallery>".is_ie('фывфывфывфыввввввв')."</nameImgGallery></response>";
    echo $response;
}
?>


лучше ниче не придумал
Ответить с цитированием
  #7 (permalink)  
Старый 16.04.2009, 14:08
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

HOY, да, проблема в другом. Решается так: получаем xml, который отправляется браузеру и проводим его валидацию - http://validator.w3.org/
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кодировка при использовании Ajax Nichloas AJAX и COMET 9 17.09.2009 16:06
Формуляр с AJAX konstantinopol Общие вопросы Javascript 4 31.03.2009 14:24
Неверный результат в AJAX с получением HTML Raynor AJAX и COMET 3 17.12.2008 18:38
Ajax & Autorun Ergall-M AJAX и COMET 11 08.05.2008 15:33
как дождаться AJAX ответа scuter Общие вопросы Javascript 3 23.03.2008 05:54