webForumDet fria alternativet

Ajax 'systemfel' i IE7

9 svar · 503 visningar · startad av MickeA.com

MickeA.comMedlem sedan feb. 20034 441 inlägg
#1

Tjena
Jag har en sida som utifrån valet i en <select> laddar in ett formulär via Ajax.
Sidan är XHTML Strict Valid och allt fungerar utmärkt i Firefox samt Opera.
Men när jag kör samma sida i Explorer 7, så laddas inte innehållet in och jag får scriptfelet:

systemfel -1072896658

Jag har testat att starta om IE, vilket inte gör någon skillnad.
Har även Googlat en del och de flesta saker man hittar är på Ryska alt. Spanska / Portugisiska, så det är inte mycket till hjälp.

Scriptet som sätter igång allt, ser ut såhär:

function fetch_content(fetch_what, template_id){
	var url =	"ajax-fetch.asp"
			+ "?fetch_what=" + fetch_what
			+ "&fetch_id=" + template_id;

	showLayer('loading-msg');
	my_ajax = new sack();
	my_ajax.requestFile		= url;
	my_ajax.onLoading		= function(){ showLayer('loading-msg'); };
	my_ajax.onError			= function(){ alert("An internal servererrror occoured, please contact us.\n"); hideLayer('loading-msg'); return false; };
	my_ajax.onCompletion		= function(){ document.getElementById('ajax-content').innerHTML = my_ajax.response; showLayer('ajax-content'); hideLayer('loading-msg'); };
	my_ajax.runAJAX();
}

Jag bifogar även ajax-filen, så ser ni hur allt hänger ihop.
Är det någon annan som dykt på samma fel, eller vet vad som ställer till det?

Tack!

colioneMedlem sedan juni 20014 421 inlägg
#2

Det problemet brukar vara relaterat till att du inte skickar tillbaka något charset på din request. Kör du apache prova lägga till detta i din .htaccess fil

AddDefaultCharset utf-8

Alternativt i php:

header("Content-type: text/plain; charset=UTF-8");

Skickar du html:

header("Content-type: text/html; charset=UTF-8");

Ja du förstår principen.. ;)

MickeA.comMedlem sedan feb. 20034 441 inlägg
#3

Jo, har förstått att det har med det här att göra, men är inte med på hur jag löser det.
I filen 'ajax.js' har jag följande rader:

var self = this;
if (this.method == "GET") {
	totalurlstring = this.requestFile + this.queryStringSeparator + this.URLString;
	this.xmlhttp.open(this.method, totalurlstring, true);
} else {
	this.xmlhttp.open(this.method, this.requestFile, true);
	try {
		[b]this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")[/b]
	} catch (e) { }
}

Antar att det är den fetstilta raden jag ska ändra på?
Det jag gör är att ladda en sida (genom asp...) med ett formulär.

Sidan är UTF-8 / Asp / MS-SQL.

colioneMedlem sedan juni 20014 421 inlägg
#4

Nej, det är sidan som skickar tillbaka datan som ska ha det som header.

MickeA.comMedlem sedan feb. 20034 441 inlägg
#5

Så, i mitt fall är det alltså filen 'ajax-fetch.asp' där jag ska lägga till detta?
Det konstiga är bara att jag i den filen inkluderar en "funcs-fil" där jag redan sätter headers och content-type.

Sätter jag den igen i filen, så får jag ett felmeddelande att denna inte kan sättas två gånger.

colioneMedlem sedan juni 20014 421 inlägg
#6

Hmm, intressant. Om du plockar bort funktioner o.dyl då och bara skickar tillbaka dummy-grejs, får du samma resultat då om du provar med utan:

<%Response.AddHeader %>

Har du någon response.buffer satt?

MickeA.comMedlem sedan feb. 20034 441 inlägg
#7

Ha, coolt, nu tog jag bort alla de raderna:

@LANGUAGE="VBSCRIPT" CODEPAGE="65001"
Session.CodePage = 65001
Response.CodePage = 65001
Response.Charset = "utf-8"
Response.Addheader	"Content-Type", "text/html; charset=utf-8"

Och då funkar det även i Explorer ;)
I den här applikationen kommer många olika språk hanteras, däribland ryska / polska / portugisiska mf. och det är viktigt alla alla tecken visas rätt.

Som jag förstått det hela så gör tex. Response.Codepage att formulärsdata skickas "på rätt sätt", alltså som UTF-8 i det här fallet.

Så, går det att säkerställa detta, och fortfarande få sakerna att fungera?

MickeA.comMedlem sedan feb. 20034 441 inlägg
#8

Jo, hmm, nu börjar problemen.
I.o.m att jag tog bort raderna ovan så ser det ut såhär nu, där ÅÄÖ och andra 'ovanliga tecken' finns:

Du &#65533;r redan registrerad p&#65533; %SITE%

Hur löser man det här nu då?

colioneMedlem sedan juni 20014 421 inlägg
#9

Denna:
Response.Charset = "utf-8"
Resulterar i samma som den här:
Response.Addheader "Content-Type", "text/html; charset=utf-8"

Prova att tabort en, det borde inte spela nån roll, men man vet aldrig.
Sidan som tar emot datan, vilken kodning har den?

MickeA.comMedlem sedan feb. 20034 441 inlägg
#10

Fick igång det kort efter mitt senaste inlägg, men missade att tala om det här.
Tog bort Response.Addheader "Content-Type", "text/html; charset=utf-8" från min fil som skriver ut alla övriga headers.
I ajax filen behövde jag sedan inte ange något speciellt alls, för att det skulle fungera.

I nuläget fungerar det iaf. med åäö, så jag förutsätter att även det ryska alfabetet visas korrekt.

Tack!

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