webForumDet fria alternativet

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

8 svar · 2 383 visningar · startad av Simkisen

SimkisenMedlem sedan jan. 200357 inlägg
#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>
Peter SMedlem 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');
SimkisenMedlem sedan jan. 200357 inlägg
#3

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

SimkisenMedlem 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.

BaltizMedlem 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.

SimkisenMedlem 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"

BaltizMedlem 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.

SimkisenMedlem 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

SimkisenMedlem sedan jan. 200357 inlägg
#9

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

TACK!

135 ms totalt · 3 externa anrop · v20260731065814-full.7de19299
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)