Я разрабатываю стороннюю службу, встроенную в веб-сайты в виде фрагмента JS, для которой, помимо прочего, необходимо получить некоторые данные jsonp с моего PHP-сервера и отобразить текст, содержащийся в объекте 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, но не работают в IE, когда веб-сайт для встраивания кодируется с использованием чего-то отличного от utf8, в частности веб-страницы Windows 1255 (иврит), в том смысле, что текст, содержащийся в файле file.json, отображается как бред , Изменение кодировки веб-сайта (в браузере, а не в исходном коде) на юникод «исправляет» проблему с отображаемым текстом из json, хотя, конечно, делает остальную часть страницы похожей на бред… У меня была похожая проблема с помощью FF, до того как я добавил строку заголовка (...) в скрипт php.
Что мне делать? Кто-нибудь знает, почему он хорошо работает в FF, а не в IE? Есть ли дополнительное определение, такое как заголовок (...), который требуется специально для IE?
Ограничения:
У меня нет контроля над сайтом встраивания
file.json должен быть закодирован в utf8 (так работает мой db)
Один и тот же код должен быть в состоянии обрабатывать как страницы с кодировкой utf8, так и страницы без кодировки utf8