Zoque.Forum
Dirsek Teması:
Geri Dön Zoque.Forum » Webmaster Kaynaklari » ://www » Internet Explorer'da .documentElement sorunu [Ajax]


Yanıt
 
LinkBack Seçenekler
Old 13.04.2006   #1 (permalink)
 
ZuLuuuuuu's Avatar
 
Üyelik Tarihi: 28.05.2001
Yer: İzmir/Ankara
Yaş: 23
Mesaj: 766
Internet Explorer'da .documentElement sorunu [Ajax]


Merhabalar,

Sorunum Firefox'ta çalışıp internet Explorer'da çalıştırmayı başaramadığım bir JS kodu üzerine:
Kod:
ajax = new ActiveXObject("Msxml2.XMLHTTP.3.0");
.
.
.
.
.
var rootNode = ajax.responseXML.documentElement;	
var categories = rootNode.getElementsByTagName("category");
Yukarıdaki işlemleri Firefox'ta yaptığımda bir sorun çıkmadı (internet üzerindeki ajax örneklerinde hep bu şekilde kodlar çünkü) ama IE'de "ajax.responseXML.documentElement" in bir obje olmadığından ya da null olduğundan bahsediyor ve kodları yürütmeyi durduruyor o satırdan sonra.

Aslında internette bu sorundan bahseden birkaç site bulabildiysem de çözüm bulamadım.
ZuLuuuuuu şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 13.04.2006   #2 (permalink)
 
delizeka's Avatar
 
Üyelik Tarihi: 22.04.2003
Yer: İstanbul
Yaş: 26
Mesaj: 112
Re: Internet Explorer'da .documentElement sorunu [Ajax]

Eger baska bir uyumsuzluk yok ise, httprequest objeni asagidaki sekilde uretip tekrar deneyebilirsin. Aklima ilk bu geldi.

Kod:
if (window.XMLHttpRequest)     // Object of the current windows
{
        request = new XMLHttpRequest();     // Firefox, Safari, ...
}
else
if (window.ActiveXObject)   // ActiveX version
{
       request = new ActiveXObject("Microsoft.XMLHTTP");    // internet Explorer
}
http://www.xul.fr/en-xml-ajax.html
__________________
http://www.kimindir.com - Alan adı sorgulama (whois) servisi... [v0.4 beta]
delizeka şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 13.04.2006   #3 (permalink)
 
ZuLuuuuuu's Avatar
 
Üyelik Tarihi: 28.05.2001
Yer: İzmir/Ankara
Yaş: 23
Mesaj: 766
Re: Internet Explorer'da .documentElement sorunu [Ajax]

sorun XMLHttpRequest nesnesi üretmekte değil onu zaten dediğin şekilde hallettim. sorun XML olarak cevabı yorumlamakta.
ZuLuuuuuu şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 13.04.2006   #4 (permalink)
 
delizeka's Avatar
 
Üyelik Tarihi: 22.04.2003
Yer: İstanbul
Yaş: 26
Mesaj: 112
Re: Internet Explorer'da .documentElement sorunu [Ajax]

Kodun tamamı biraz uzun galiba ve o nedenle göndermedin sanırım. Kodda request objesini browsera göre ayırmadığını görünce ondan kaynaklanabileceğini düşünmüştüm yanılmışım demek ki.

Statik bir XML dosyası mı okumaya çalışıyorsun yoksa server-side bir script ile mi ürettiriyorsun bilmiyorum ancak, eğer server-side bir script ile XML üretiyorsan browsera yollarken headerını XML olarak değiştirmen problemi çözebilir. IE, gelen response u text/HTML olarak algılıyorsa responseXML boş dönebilir. Oluşturduğun XML in syntax inde IE nin sevmediği bir durum olabilir. Bunları kontrol edersen hatanın nereden kaynaklandığı konusunda doğru taraf üzerine yönlenebiliriz. Eğer kod çok uzun değilse hem client hem de server tarafındaki kodu gönderebilirsen, ya da hatayı tekrarlayabildiğin küçük bir örnek yazabilirsen daha net bir şekilde yardımcı olmaya çalışırım.

Kolay gelsin..
__________________
http://www.kimindir.com - Alan adı sorgulama (whois) servisi... [v0.4 beta]
delizeka şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 14.04.2006   #5 (permalink)
 
ZuLuuuuuu's Avatar
 
Üyelik Tarihi: 28.05.2001
Yer: İzmir/Ankara
Yaş: 23
Mesaj: 766
Re: Internet Explorer'da .documentElement sorunu [Ajax]

Ok, o zaman kodların büyük bölümünü buraya da yazayım. XML'yi ASP ile oluşturuyorum. Header bilgisini "text/XML" olarak belirtiyorum.


Bu ajax kodları:
Kod:
var ajax;

function LoadDocument(URL, Data, Action)
	{
	ajax = false;

	if (window.XMLHttpRequest)
		{
		try
			{
			ajax = new XMLHttpRequest();
			}
		catch(e)
			{
			ajax = false;
		        }
		}
		else if (window.ActiveXObject)
			{
			try
				{
				ajax = new ActiveXObject("Msxml2.XMLHTTP.3.0");
				}
			catch(e)
				{
				try
					{
					ajax = new ActiveXObject("Microsoft.XMLHTTP");
					}
				catch(e)
					{
					ajax = false;
        				}
				}
			}

		if (ajax)
			{
			ajax.open("POST", URL, true);
			ajax.setRequestHeader("Content-Type",
			"application/x-www-form-urlencoded; charset=UTF-8");
			ajax.send(CodeForeignCharacters(Data));
			ajax.onreadystatechange = OnAjaxChange(Action);
			}

	function OnAjaxChange(Action)
		{
		alert(ajax.readyState);
		alert(ajax.status);
		alert(ajax.responseText);


		if (ajax.readyState == 4)
			{
			if (ajax.status == 200)
				{
				if (Action == "AddNewLabel")
					{
					var rootNode = ajax.responseXML.documentElement;	
					var users = rootNode.getElementsByTagName("label");
					for(x = 0; x < users.length; x++)
						{
						alert(DecodeForeignCharacters(users[x].getAttribute('name')));
						}

					}
				else if (Action == "EditLabel")
					{
					document.getElementById('LabelSelection' + ObjectID).innerHTML = document.getElementById('LabelName' + LabelID).value;
					document.getElementById('EditLabel' + ObjectID).style.display = "none";
					document.getElementById('ShowLabel' + ObjectID).style.display = "block";
					}
				}
			else
				{
				alert("XML verilerinin al1nmas1 s1ras1nda bir hata meydana geldi:\n" + ajax.statusText);
				}
			}
		}
	}
Bu XML'sayfasının oluşturulduğu ASP kodları:

Kod:
	Response.ContentType = "text/XML"
	Session.Codepage = 1254
	Session.LcId = 1055
	Session.TimeOut = 155
	Response.Buffer = True
	Response.Expires = -1
	Response.ExpiresAbsolute = Now() - 2
	Response.AddHeader "pragma","no-cache"
	Response.AddHeader "cache-control","private"
	%>
	<labels>
		<%
		SQL = "Select LabelID, LabelName From Labels Order By LabelPlace ASC"
		Set Labels = Connection.Execute(SQL)
		Do While Not Labels.Eof
			LabelsLabelID = Labels("LabelID")
			LabelsLabelName = Labels("LabelName")
			%>
			<label id="<%=LabelsLabelID%>" name="<%=CodeForeignCharacters(LabelsLabelName)%>"></label>
			<%
			Labels.MoveNext
		Loop
		Labels.Close
		Set Labels = Nothing
		%>
	</labels>
Bu Arada eğer documentElement'i çıkarırsam bu sefer şu satırda:
Kod:
ajax.onreadystatechange = OnAjaxChange(Action);
Tür uyumsuz hatası alıyorum.

Mesaj ZuLuuuuuu tarafından 14.04.2006 (06:40) yeniden düzenlendi.
ZuLuuuuuu şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 14.04.2006   #6 (permalink)
 
ZuLuuuuuu's Avatar
 
Üyelik Tarihi: 28.05.2001
Yer: İzmir/Ankara
Yaş: 23
Mesaj: 766
Re: Internet Explorer'da .documentElement sorunu [Ajax]

Sorunda bir ilerleme kaydettim hatta çözdüm diyebilirim:

XML'yi oluştururken başa bir
Kod:
Response.Write("<?XML version='1.0' encoding='ISO-8859-9'?>")
koyunca çalıştı hem de documentElement'i çıkarmadan.

Alıntı:
delizeka tarafından gönderilen mesaj:
Oluşturduğun XML in syntax inde IE nin sevmediği bir durum olabilir.
Sanırım olay bundanmış

Yalnız hala "Tür uyumsuz" hatası alıyorum şu satırda:
Kod:
ajax.onreadystatechange = OnAjaxChange(Action);
ZuLuuuuuu şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 14.04.2006   #7 (permalink)
 
Skeleton's Avatar
 
Üyelik Tarihi: 23.10.2005
Yer: İstanbul
Yaş: 23
Mesaj: 73
Re: Internet Explorer'da .documentElement sorunu [Ajax]

ajax.onreadystatechange = OnAjaxChange(Action);

Yukarıdaki satırda OnAjaxChange eventi Action parametresi ile çağrılıyor ve bunun sonucu ajax.onreadystatechange'e atılıyor. Hatanın nedeni bu olması lazım.

Eğer Action gibi bir parametre kullanmamış olsan şu kodla sorun çözülür:

ajax.onreadystatechange = OnAjaxChange; // Dikkat: OnAjaxChange() değil

Yani fonksiyonu çağırmaktansa fonksiyonun kendisini ajax.onreadystatechange'e atıyoruz. Ama Action parametresi olunca bu nasıl yazılır onu hiç düşünmemiştim. Kötü bir çözüm olacak ama Action değişkenini parametre yapma da en başta global olarak tanımla ve öyle kullan. Aklıma daha iyi bir yöntem gelirse yazarım. Kolay gelsin.
Skeleton şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 14.04.2006   #8 (permalink)
 
Skeleton's Avatar
 
Üyelik Tarihi: 23.10.2005
Yer: İstanbul
Yaş: 23
Mesaj: 73
Re: Internet Explorer'da .documentElement sorunu [Ajax]

Veya şunu bir dener misin:

Kod:
var ajax;

function LoadDocument(URL, Data, Action)
{
    ajax = false;

    if (window.XMLHttpRequest)
    {
        try
        {
            ajax = new XMLHttpRequest();
        }
        catch(e)
        {
            ajax = false;
        }
    }
    else if (window.ActiveXObject)
    {
        try
        {
            ajax = new ActiveXObject("Msxml2.XMLHTTP.3.0");
        }
        catch(e)
        {
            try
            {
                ajax = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch(e)
            {
                ajax = false;
            }
        }
    }

    if (ajax)
    {
        ajax.open("POST", URL, true);
        ajax.setRequestHeader("Content-Type",
        "application/x-www-form-urlencoded; charset=UTF-8");
        ajax.send(CodeForeignCharacters(Data));
        ajax.onreadystatechange = function() {
            alert(ajax.readyState);
            alert(ajax.status);
            alert(ajax.responseText);

            if (ajax.readyState == 4)
            {
                if (ajax.status == 200)
                {
                    if (Action == "AddNewLabel")
                    {
                        var rootNode = ajax.responseXML.documentElement;    
                        var users = rootNode.getElementsByTagName("label");
                        for(x = 0; x < users.length; x++)
                        {
                            alert(DecodeForeignCharacters(users[x].getAttribute('name')));
                        }

                    }
                    else if (Action == "EditLabel")
                    {
                        document.getElementById('LabelSelection' + ObjectID).innerHTML = document.getElementById('LabelName' + LabelID).value;
                        document.getElementById('EditLabel' + ObjectID).style.display = "none";
                        document.getElementById('ShowLabel' + ObjectID).style.display = "block";
                    }
                }
                else
                {
                    alert("XML verilerinin al1nmas1 s1ras1nda bir hata meydana geldi:\n" + ajax.statusText);
                }
            }
        };
    }
}
Skeleton şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 14.04.2006   #9 (permalink)
 
ZuLuuuuuu's Avatar
 
Üyelik Tarihi: 28.05.2001
Yer: İzmir/Ankara
Yaş: 23
Mesaj: 766
Re: Internet Explorer'da .documentElement sorunu [Ajax]

Teşekkürler, kodu verdiğiniz işleyişle yazınca sorun çözüldü.
ZuLuuuuuu şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Sponsorlu Bağlantılar
Zoque.Forum
Reklam
Yanıt

Etiketler

ajax , sorunu , documentelement , explorerda , internet


 
Zoque'a hoşgeldiniz!
Zoque 27.02.1999 tarihinde yayın hayatına başlamış, paylaşıma dayalı bir oluşumdur. Tasarım, teknoloji, web, kültür ve sanat ana başlıkları altında bilgi paylaşımı ve benzer değerlere sahip katılımcıların birbirleriyle iletişime girmelerine imkan sağlar. "Az ama Öz" sloganından yola çıkarak, kaliteli ve nitelikli katılımı temel alır.

Saygın ve ciddi bir ortamda yardımlaşmak, haberleşmek, kendi bildiklerini diğer katılımcılarla paylaşmak isteyen, oluşumumuza düzenli katılımda bulunacağı inancını taşıyan konuklarımızı üye olmaya davet ediyoruz. [ » ]


Üye Girişi:

En popüler ilk 100 etiket
Tag Cloud
acil adsl ajax almak arama araniyor ariyorum ariyoruz asp bilen bilgi bilgisayar blog calisma canon css dijital div domain dosya eleman film firefox flash font form forum fotograf freelance google gore grafik grafiker hakkinda hangi hata hatasi hosting html ilgili ilk image internet istanbul istiyorum java javascript karakter kayit kisisel kullanimi link logo mac mail menu muzik mysql nasil neden nedir online photoshop php problemi program programi reklam resim satilik sayfa script server ses sistemi site sitesi son soru sorun sorunsali sorunu sql swf tasarim tasarimci tasarimcisi tasarimi turk turkce veri video web windows wordpress xml yardim