Leser: 28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="/js/jquery-1.7.min.js"></script>
<script language="javascript" type="text/javascript">
function speichern() {
$.ajax(
{
type: "post",
url: "/cgi-bin/hhb1.pl",
data: $("#form").serialize(),
success: function(msg) {
alert(msg);
},
error: function() {
alert('fehler');
}
});
}
</script>
<body>
<form action="/cgi-bin/hhb1.pl" method="post" enctype="application/x-www-form-urlencoded" name="form" id="form">
<input type="text" name="wert" id="wert" />
<input type="submit" name="submit" id="submit" value="Senden" />
<input type="button" name="button" id="button" value="Ajax" onclick="speichern();" />
</form>
</body></html>
2011-12-27T13:16:08 GwenDragon//EDIT: Es sendet $.ajax immer UTF-8-Daten bei POST.
Siehe http://api.jquery.com/jQuery.ajax/
2011-12-27T14:29:14 biancaNa, wie denn das? Interessiert mich. Zeig mal den Code dafür.Bei mir zumindest zieht sich jQuery den charset der Seite selbst.
2011-12-27T15:46:00 GwenDragonNa, wie denn das? Interessiert mich. Zeig mal den Code dafür.
2011-12-27T15:46:00 GwenDragonNa, wie denn das? Interessiert mich. Zeig mal den Code dafür.
2011-12-27T16:58:29 GwenDragonAnsonsten verwendet das ablaufende JS immer das Charset der Webseite, was entweder in einem HTML-Element Meta mit http-equiv="content-type" drin steht oder vom Server gesendet wird.
QuoteBei mir zumindest zieht sich jQuery den charset der Seite selbst.
2011-12-28T12:05:53 GwenDragonDu schreibst: "jQuery zieht sich", das liest sich als würde jQuery eine Routine haben, die erkennt, welches Charset verwendet wird.
2011-12-27T14:29:14 biancaTückisch ist das nicht, denn der Apache ist so eingestellt und Leute, die Webprogrammierung machen, müssen sowas wissen oder wenigstens überprüfen können. Der Apach mach das mit ISO-8859-1 aber schon seit Jahren so.(...)Also liegt es an der Apache Konfig. Huuu, tückisch.
2011-12-27T14:29:14 biancaIn der Doku von .ajax steht zu content-type drin, dass die Daten als UTF-8 gesendet werden:Edit2: Aber warum steht in der jQuery Docu pauschal UTF-8 und nicht "gemäß Webserverkonfig"?
http://api.jquery.com/jQuery.ajax/contentTypeString
(...)
Data will always be transmitted to the server using UTF-8 charset; you must decode this appropriately on the server side
http://api.jquery.com/jQuery.ajax/scriptCharset
Only for requests with "jsonp" or "script" dataType and "GET" type. Forces the request to be interpreted as a certain charset. Only needed for charset differences between the remote and local content.
1 2 3 4 5 6 7 8
#!/usr/bin/perl use CGI qw/:all/; charset('utf-8'); print header; print $_,': ',param($_),br for (param);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javascript" src="/js/jquery.js"></script>
<script language="javascript" type="text/javascript">
function speichern() {
$.ajax(
{
type: "post",
url: "/cgi/x.pl",
data: $("#form").serialize(),
success: function(msg) {
alert(msg);
},
error: function() {
alert('fehler');
}
});
}
</script>
<body>
<form action="/cgi/x.pl" method="post" enctype="application/x-www-form-urlencoded" name="form" id="form">
<input type="text" name="wert" id="wert" />
<input type="submit" name="submit" id="submit" value="Senden" />
<input type="button" name="button" id="button" value="Ajax" onclick="speichern();" />
</form>
</body></html>
2011-12-27T14:05:36 GwenDragonBei mir funktioniert folgendes korrekt:
2011-12-28T11:30:53 MartinRBei mir leider nicht.
2011-12-28T11:37:32 biancaNein, das hat sie definitiv nicht! Es ist bei mir kein charset festgelegt.2011-12-28T11:30:53 MartinRBei mir leider nicht.
Vlt. hat GwenDragon ihren Webserver auf UTF-8 eingestellt. Dann hättet ihr beide nicht die selben Voraussetzungen.
2011-12-28T11:37:32 bianca... Hast du es mal ohne dieses serialize() versucht? Das braucht man nämlich nicht...
2011-12-28T11:41:22 GwenDragonNun, gerade nochmals getestet mit dem von mir genannten Schnippseln mit IE 9, Firefox, Chrome, Opera auf Win 7.
2011-12-28T11:41:22 GwenDragonDu verwendest welche Versionen von Perl und jQuery?
2011-12-28T13:01:25 GwenDragon
2011-12-28T13:33:12 GwenDragonund du UTF-8 verwendest, sollte das kein Problem darstellen.
2011-12-28T13:55:27 GwenDragonDa kommen interessante Probleme bei raus.
Quotewert=%C3%A4%C3%B6%C3%BC
utf8::encode($octets);
2011-12-28T18:02:24 rostimysql_enable_utf8 => 1
2011-12-28T19:16:40 MartinR2011-12-28T18:02:24 rostimysql_enable_utf8 => 1
Grandios! Danke, das erspart einige Tipparbeit in den sql-Statements.
2011-12-28T16:52:12 MartinRDas Thema hab ich nun mal als "gelöst" markiert obwohl mein eigentliches Problem noch offen ist. Wenn also noch jemand ne Idee hat, her damit ...
QuoteVersuch dies im Perl-Script:
[code=perl]use CGI...