webForumDet fria alternativet

åäö funkar inte vid uppdaterng av <div> med AJAX

JavaScript

8 svar · 2 385 visningar · startad av Simkisen

Medlem sedan jan. 200357 inlägg
Frågan#1

Hej,
jag försöker komma ifrån frames som välkänt är hatat bland dagens webdesigners och istället för att ladda om hela sidan varje gång så vill jag bara ladda om en div. Har hittat ett script som funkar bra förutom att den byter ut å, ä, ö mot skumma tecken, funkar varken i FF eller IE.

Scriptet är lite overkill för mitt ändamål då den kan ladda om objekt som .js och .css också vilket jag inte behöver. men iaf, ÅÄÖ funkar INTE!

Jag är inte haj på det här med AJAX så jag vet inte vad som e fel :/

scriptet:

<script type="text/javascript">
		
		/***********************************************
		* Dynamic Ajax Content- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
		* This notice MUST stay intact for legal use
		* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
		***********************************************/
		
		var loadedobjects="";
		var rootdomain="http://"+window.location.hostname;
		
		function ajaxpage(url, containerid){
			var page_request = false;
			if (window.XMLHttpRequest) // if Mozilla, Safari etc
				page_request = new XMLHttpRequest();
			else if (window.ActiveXObject){ // if IE
				try {
					page_request = new ActiveXObject("Msxml2.XMLHTTP");
				} 
				catch (e){
					try{
						page_request = new ActiveXObject("Microsoft.XMLHTTP");
					}
					catch (e){}
				}
			}
			else
				return false;
			page_request.onreadystatechange=function(){
				loadpage(page_request, containerid);
			}
			page_request.open('GET', url, true);
			page_request.send(null);
		}
		
		function loadpage(page_request, containerid){
			if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))
				document.getElementById(containerid).innerHTML=page_request.responseText;
		}
		
		function loadobjs(){
			if (!document.getElementById);
				return;
			for (i=0; i<arguments.length; i++){
				var file=arguments[i];
				var fileref="";
				if (loadedobjects.indexOf(file)==-1){ //Check to see if this object has not already been added to page before proceeding
					if (file.indexOf(".js")!=-1){ //If object is a js file
						fileref=document.createElement('script');
						fileref.setAttribute("type","text/javascript");
						fileref.setAttribute("src", file);
					}
					else if (file.indexOf(".css")!=-1){ //If object is a css file
						fileref=document.createElement("link");
						fileref.setAttribute("rel", "stylesheet");
						fileref.setAttribute("type", "text/css");
						fileref.setAttribute("href", file);
					}
				}
				if (fileref!=""){
					document.getElementsByTagName("head").item(0).appendChild(fileref)
					loadedobjects+=file+" " //Remember this object as being already added to page
				}
			}
		}
		
	</script>

länk skrivs:

<a href="javascript:ajaxpage('sida.html', 'container_page');">Sida</a>
Medlem sedan dec. 20025 483 inlägg
#2

Skriv de tecken du nämner som ASCII-koder ('ä' = ä t.ex).

I Mozilla-baserade webbläsare kan man använda funktionen overrideMimeType() strax efter anropet till open():

page_request.overrideMimeType('text/xml; charset=iso-8859-1');
Medlem sedan jan. 200357 inlägg
#3

tack, ska testa det ikväll då jag kommer hem :)

Medlem sedan jan. 200357 inlägg
#4

koden funkar utmärkt för mozilla-webbläsare...finns det inte möjligtvis någon som funkar för IE också?? nån som vet??

annars så får jag koda i php att skriva om alla åäö när man hämtar, eller då text sparas eller nåt :/ men helt klart enklast om det fanns liknande för IE.

Medlem sedan maj 200591 inlägg
#5

Du måste på servern ange vilken teckenuppsättning du använder. I ASP skriver du Response.Charset="ISO-8859-1", finns motsvarande kommandon för andra scriptspråk.

Medlem sedan jan. 200357 inlägg
#6

Sidan körs på ett webbhotell så jag kan inte gå in o pilla på server-inställningarna.
Kommer att köra med PHP-filer så småning om. just nu bara testat med HTML filer, och då räcker det inte med att meta-tagga den som charset="ISO-8859-1"

Medlem sedan maj 200591 inlägg
#7

Det är ingen server-inställning du ändrar, utan en rad du skriver i ditt php-script.
Jag är inte så bra på php, men du kan ju testa detta:

header("Content-type: text/html; charset=ISO-8859-1");

Det går ju förstås inte skriva detta på en html-fil, byt till php direkt och lägg till denna rad och se om det hjälper.

Medlem sedan jan. 200357 inlägg
#8

har hittat inställningen i php.ini som fixar problemet, nu ska jag bara övertala serverägaren att ändra inställningen på charset :D

Medlem sedan jan. 200357 inlägg
#9

åh, fan, din lösning funkade ju också :)
slipper jag tracka serverägaren då :)

TACK!

274 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)