【问题标题】:Pass JSON from php to javascript将 JSON 从 php 传递到 javascript
【发布时间】:2011-07-03 08:08:27
【问题描述】:

我想本地化我的 web 应用程序。由于不建议仅通过 javascript 进行本地化,因此我认为使用 php 将是一种替代方法。

因此,我使用 php 读取了一个存储所有本地化数据的messages.json 文件。

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

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

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

所以这只是一个 var,它包含 messages.json 文件中的所有数据,看起来像这样

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

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

var title = getItem("extTitle");

它返回Test1。知道怎么做吗?

我对 json 不是很熟悉,但如果我只是提醒 localeObj,它只会给我 [object Object]。

【问题讨论】:

    标签: php javascript jquery json


    【解决方案1】:
    var getItem = function(item) {
       return localObj[item].message;
    };
    

    您也可以随时封装您的 i18n 字符串...

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

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

    【讨论】:

    • 我丢失了;声明前 window.getItem(item) { }
    • 应该是localObj一个字符串吗?因为它是来自 php 方法的字符串
    • @ArtWorkAD 不,不应该。如果是,则需要将其解析为 JSON。
    • @ArtWorkAD 您是否按原样复制代码? JavaScript 有 ASI,所以它不应该是这样(除非你有一个 IDE 抱怨)。您是否在 PHP 中运行此代码?
    【解决方案2】:

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

    例子:

    localeObj["extTitle"];
    localeObj.extTitle;
    

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 非常感谢最后一次提交,因为它允许我将我的标记放在谷歌地图上。非常有效。
      • 你有什么提示可以通过咖啡脚本完成相同的任务吗?
      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-16
        相关资源
        最近更新 更多