Передать JSON из PHP в JavaScript - PullRequest
4 голосов
/ 24 февраля 2011

Я хочу локализовать свое веб-приложение. Так как локализация только через javascript не рекомендуется, я подумал, что использование php будет альтернативой.

Итак, с помощью php я прочитал файл messages.json, в котором хранятся все данные о локализации.

$json = file_get_contents("_locales/en/messages.json");

В заголовке моего веб-приложения я генерирую некоторый javascript с php в соответствии с языком браузера пользователя.

echo "var localeObj = " . $json . ";";

Так что это просто переменная, которая содержит все данные из файла m essages.json, который выглядит так

{
    "extTitle": {
        "message": "Test1"
    },
    "extName":{
        "message": "Test2"
    }
}

Теперь я хочу иметь доступ к каждому элементу из json, как

var title = getItem("extTitle");

и возвращается Test1. Есть идеи, как это сделать?

Я не очень знаком с json, но если я просто предупреждаю localeObj, это дает мне просто [объект].

Ответы [ 4 ]

4 голосов
/ 24 февраля 2011
var getItem = function(item) {
   return localObj[item].message;
};

Вы также всегда можете инкапсулировать свои строки i18n ...

(function() {

   var localObj = { ... };

   window.getItem = function(item) {
       return localObj[item].message;
   };

})();

Таким образом, никакие другие переменные не могут заглушить вашу localObj.

1 голос
/ 24 февраля 2011

Вы можете инициализировать переменную javascript следующим образом.

var json = eval(<? echo $json ?>);   
alert(json.extTitle.message+ '  '+json.extName.message);
1 голос
/ 24 февраля 2011

Для доступа к свойствам объекта javascript вы используете синтаксис массива [] или точечный синтаксис ..

Пример:

localeObj["extTitle"];
localeObj.extTitle;

Я бы порекомендовал прочитать что-то вроде это , чтобы познакомиться с JSON.

0 голосов
/ 24 февраля 2011

Внутри messages.php:

<?php
header('Content-type:application/javascript');
$messages = array(
 "yes"=>"hai",
 "no"=>"iie"
);
$messages = json_encode($messages);
echo "window.messages = $messages";
?>

Внутри index.html:

<html>
 <body>
 <script type="text/javascript" src="messages.php"></script>
 <script type="text/javascript">
  console.log(window.messages)
 </script>
 </body>
</html>

Пока вы говорите браузеру интерпретировать php-файл как файл javascript, вы можете отображать все что угодно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...