Safariの古いバージョンだとAjaxでUTF-8が無視される
Safariのバージョン3台で、Ajaxでの通信のやりとりを行おうとしても、大抵は文字コードがぶっちぎられる。
せっかく全てのポイントをUTF-8でやりとりしていても、全て文字化け。
これを解決させるためには、面倒だが出力側プログラム(PHP)でエンコードして、
JavaScript側でデコードするしかない。
例)
PHP側
Ajaxにデータを渡してreq.responseTextなどで受け取らせる場合
$value = rawurlencode($value);
この$valueをAjaxの結果として返す。
JavaScript側
(prototype.jsを使った場合)
new Ajax.Request(
'ajax.php’,
{
method: 'get’,
onSuccess: request_ok,
onFailure: request_ng,
parameters: params
});
function request_ok(req)
{
var content = decodeURIComponent( req.responseText );
document.getElementById('dropLinks’).innerHTML = content;
}
function request_ng(req){}
これでJavaScriptからの出力が文字化けせずに取り出す事が出来る。
なおこの仕組みは他のブラウザでも動くので、Safari専用に考える事は無いと思われる。
ディスカッション
コメント一覧
まだ、コメントがありません