私はウェブサイトにJSスニペットとして埋め込まれたサードパーティのサービスを開発しています。これは、とりわけ、PHPサーバーからいくつかのjsonpデータをフェッチし、ホスティング埋め込みウェブサイトにjsonオブジェクトに含まれるテキストを表示する必要があります。
私はjQueryを使用しているので、次の.getJSONリクエストを発行します。
$.getJSON("http://localhost/php/server.php?a=gfs"+"&callback=?",function(Obj) {
doSomething(Obj);
});
そしてPHP側(server.php)で私は持っています:
<?php
header('Content-Type: text/javascript; charset=utf8');
$retval = file_get_contents('../scripts/file.json');
//change to json php
$callback = $_GET['callback'];
echo $callback . '(' . $retval . ')';
?>
これらはFFで完全に機能しますが、埋め込みWebサイトがutf8とは異なるもの、具体的にはWindows 1255(ヘブライ語)Webページでエンコードされている場合、file.jsonに含まれるテキストがぎこちなく表示されるという意味で、IEでは失敗します。ウェブサイトのエンコーディング(ソースではなくブラウザ)をユニコードに変更すると、jsonから表示されるテキストの問題が「修正」されますが、もちろんページの残りの部分はぎこちなく見えます...同様の問題がありましたFFを使用して、phpスクリプトにheader(...)行を追加する前に。
私は何をすべきか?IEではなくFFでうまく機能する理由を誰かが知っていますか?IEに特に必要なheader(...)などの追加の定義はありますか?
制約:埋め込みWebサイトファイルを制御できません。jsonはutf8でエンコードする必要があります(これが私のdbの動作方法です)同じコードがutf8エンコードページと非utf8ページの両方を処理できる必要があります