[ajax] problem z internet explorer

0

mam taki kod:

function zmien(id)
{

	if 	(window.XMLHttpRequest) 
		{
		xmlHttp = new XMLHttpRequest();
		}
		else
		{
		if (window.ActiveXObject)
			{
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
			}
		}
	xmlHttp.onreadystatechange = function ()
	{
		if (xmlHttp.readyState == 4 || xmlHttp.status == 200)
			{
			document.getElementById('tresc').innerHTML = xmlHttp.responseText;
			}
		else alert('Niestety wystąpił błąd!');
    }
	
	document.getElementById('tresc').innerHTML = '<div class="loading"></div>';
	if ( id == 1 ) 
		{		
		xmlHttp.open("GET", 'pokaz.php?str=glowna', true);
		}
    xmlHttp.send(null);
	xmlHttp.overrideMimeType('text/html; charset=Windows-1250');

}

no jest ok niby na mozilli a na internet explorer pokazuje krzaki zamiast polskich znaków ;/ kodowanie mam windowsowe ;/
a kod tego pokaz.php to

if ( $_GET['str'] == 'glowna' )
	{
	//wysw
	
	//form
	
	echo '<div id=\'dodaj\'>

		<form method="post" action="">
			<table border="0">
				<tr>
					<td><b>Tytuł:</b></td><td><input type="text" name="tytul" id="tytul" style="width:250px;"/></td>
				</tr>
				
				<tr> 
					<td><b>Treść:</b></td><td><textarea name="tresc" id="pole" rows="0" cols="0" style="width:250px;height:130px;"></textarea></td>
					
				</tr>
				
				<tr>
					<td><b><a href="">Kategoria</a>:</b></td><td><select style="width:250px;" name="kat"><option value="1">Koniec</option><option value="2">Duże ostrzeżenie</option><option value="3">Małe ostrzeżenie</option></select></td>
					
				</tr>

				<tr>
					<td><input type="button" value="dodaj"/></td>
				</tr>
			</table>
		</form>
	</div>';
	}

bardzo prosze o pomoc:)

0

Wiesz co? To Ci powinno nie chodzić za same pokiełbaszone wcięcia w kodzie JavaScript! Przyłóż się do nich, to pogadamy. W HTML-u masz tak ładnie, a w JavaScripcie sieczka. Przynajmniej tu na forum tak to wygląda, po wklejeniu.

Co do tych krzaczków, to wydaje mi się, że tworzona dla IE kontrolka ActiveX (Microsoft.XMLHTTP) w ogóle nie obsługuje metody overrideMimeType. Nawet teraz zerknąłem do dokumentacji i jej tam nie widzę. Po mojemu, to skrypt Ci się na tym wywołaniu overrideMimeType po prostu wywala w IE. Szczęście, że to ostatnia linia funkcji.

Ale tak czy inaczej, forsowanie typu MIME w IE nie zadziała. Musisz zadbać o to, by serwer wysyłał dane już w odpowiednim kodowaniu. Najprościej będzie chyba użyć w PHP funkcji header(...). Pogooglaj o tym.

Czy może już to masz?

Mogą być jeszcze inne powody. Na stronie właściwej możesz mieć inne kodowanie -- tu również wyślij odpowiedni nagłówek w PHP. Albo przeglądarka wchodzi Ci w tryb quirks. Co Ci się wyświetli, gdy w pasku adresu w IE wpiszesz poniższy kod?

javascript:alert(document.compatMode)

Zacznij jednak od upewnienia się, że wszędzie masz podefiniowane dobre typy MIME z właściwym kodowaniem.

0

wyswietla sie "CSS1Compat" a co do problemu to za pomoca header wysylam kodowanie i poki co działa ;]

dzieki

0

To dobrze. A to "CSS1Compat" świadczy o tym, że DOCTYPE w Twoim kodzie został rozpoznany i przeglądarka nie weszła w tryb quirks (tryb zgodności wstecznej -- czasem naprawia bardzo stare strony, ale psuje nowsze, więc należy zadbać, by na nich się nie włączył).

1 użytkowników online, w tym zalogowanych: 0, gości: 1