1

私はウェブサイトに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ページの両方を処理できる必要があります

4

1 に答える 1

0

うーん。IEの修正により、ヘッダー定義が次のように変更されているようです。

header('Content-Type:text / javascript; charset = utf8');

header('Content-Type:text / javascript; charset = utf-8');

はい、文字セット名に「-」がありません。utf8(ダッシュなし)のターンはIEには理解されませんが、FFには理解されます。喜び。

これがいつか誰かに役立つことを証明し、無駄な時間を節約できることを願っています。

于 2010-08-25T18:13:34.440 に答える