初投稿です。
初投稿です。
質問の仕方がおかしいかもしれませんが、宜しくお願いいたします。
業務でウェブアプリケーションを作っています。
【質問】
FireFox でAjax でデータを送信すると、Content-Type に「application/x-www-form-urlencoded; charset=UTF-8」が設定されてしまいます。
jQuery の $.ajax() のオプションで、「contentType:"application/x-www-form-urlencoded"」と指定しているのですが、必ず「charset=UTF-8」が付加されてしまします。
何とか「charset=UTF-8」の付加を回避する方法は無いでしょうか?
ちなみに開発環境は次の様になっています。
【サーバ】
OS:CentOS5.5(エンコードはEUC_JP)
Webサーバ:Apach 2.0.63
DB:PostgreSQL 8.2.14
開発言語:Perl v5.8.7
CGI
JavaScriptライブラリ:jQuery 1.4.3
【クライアント】
OS:WindowsXP SP3
ブラウザ:IE8、FireFox3.6.11、Safari4.0.4
charset=UTF-8」が設定されてしまい、送信した値がCGIで受け取れない。
【質問の背景】
サーバ側でデータが取得できない原因は、Perlモジュールの(CGI)Lite.pmがフォームの値を取得する処理で、次のようなコードとなっているためです。
※一部抜粋します。
sub parse_form_data{
$content_type = $ENV{CONTENT_TYPE};
#####▼ 問題はこの部分です。
if (!$content_type ||
($content_type eq 'application/x-www-form-urlencoded')) {
#####▲
local $^W = 0;
read (STDIN, $post_data, $content_length);
$self->_decode_url_encoded_data (\$post_data, 'form');
return wantarray ?
%{ $self->{web_data} } : $self->{web_data};
} elsif ($content_type =~ /multipart\/form-data/) {
($boundary) = $content_type =~ /boundary=(\S+)$/;
$self->_parse_multipart_data ($content_length, $boundary);
return wantarray ?
%{ $self->{web_data} } : $self->{web_data};
} else {
$self->_error ('Invalid content type!');
}
}
上記の書き方では、$content_type に値が入ってこないか、「application/x-www-form-urlencoded」だったらとなってしまいます。(あってますよね)
「charset=UTF-8」が付加されたときここを通ってくれずエラー扱いされてしまいます。
先輩に相談したところ、できるだけサーバのモジュールはいじりたくないとのことです。
また、GETメソッドもできるだけ使いたくないといわれました。
長文になってしまいましたが、なにとぞ宜しくおねがいいたします。