将JSON从php传递给javascript

时间:2011-02-24 06:29:31

标签: php javascript jquery json

我想本地化我的webapp。由于不推荐仅通过javascript进行本地化,我认为使用php将是另一种选择。

所以用php我读了一个存储所有本地化数据的messages.json文件。

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

在我的webapp的标题中,我根据用户的浏览器语言生成一些带有php的javascript。

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

所以这只是一个var,它保存m essages.json文件中看起来像那样的所有数据

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

现在我希望能够从json访问每个项目,如

var title = getItem("extTitle");

然后返回Test1。知道怎么做吗?

我对json并不熟悉,但如果我只是警告localeObj它只给我[object Object]。

4 个答案:

答案 0 :(得分:4)

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

你也可以封装你的i18n字符串......

(function() {

   var localObj = { ... };

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

})();

这样,没有其他变量可能会破坏您的localObj

答案 1 :(得分:1)

使用数组语法[]或点语法.来访问javascript对象属性。

示例:

localeObj["extTitle"];
localeObj.extTitle;

我建议您阅读类似this的内容,以便更加熟悉JSON。

答案 2 :(得分:1)

你可以像这样初始化javascript变量。

var json = eval(<? echo $json ?>);   
alert(json.extTitle.message+ '  '+json.extName.message);

答案 3 :(得分:0)

内部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文件,您就可以回复任何想要的内容。