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 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.. ;)
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 Nej, det är sidan som skickar tillbaka datan som ska ha det som header.
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 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?
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?
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 �r redan registrerad p� %SITE%
Hur löser man det här nu då?
colioneMedlem sedan juni 20014 421 inlägg 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?
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!