Hallo,
ich programmiere gerade meine erste Ajax Seite.
Die Daten werden serverseitig mit Perl generiert und mit json übergeben.
Dabei gibts Probleme sobald Umlaute dabei sind.
Ich nemhe an, es liegt daran, dass die einfache Verwendung eines:
print "{'testText':'Schöne Grüße'}";
den Text nicht -wie wohl von Ajax erwartet- UTF-8 kodiert ausgibt.
Lieg ich da richtig und wenn ja, wie geben ich text mit Perl in der richtigen Kodierung aus?
Gurß
Steffen
Hier mal der auf das Problem reduzierte Quellcode:
Serverseite:
----------------------------------------------
#!C:\Perl\bin\Perl.exe
print "Content-type: text/html\n\n";
print "{'testText':'Schöne Grüße'}";
----------------------------------------------
Klientseite
----------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Test</title>
<script type="text/javascript">
var http_request = false;
function makeRequest(query, responseFunction)
{
http_request = false;
if (window.XMLHttpRequest)
{ // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType)
{
http_request.overrideMimeType('text/xml');
}
} else
if (window.ActiveXObject)
{ // IE
try
{
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e)
{
try
{
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request)
{
alert('Giving up :( Cannot create an XMLHTTP instance');
return false;
}
http_request.onreadystatechange = eval(responseFunction);
http_request.open('POST', 'http://localhost/cgi-bin/ajaxTest_2.pl', true);
http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
http_request.send(query);
}
function test()
{
makeRequest("foo", showResult);
}
function showResult()
{
if (http_request.readyState == 4)
{
if (http_request.status == 200)
{
var list = eval("(" + http_request.responseText + ")");
alert(list.testText);
}
}
}
</script>
<style type="text/css">
</style>
</head>
<body onload="test()">
Test
</body>
</html>
----------------------------------------------