将 JSON 从 php 传递到 javascript

Posted

技术标签:

【中文标题】将 JSON 从 php 传递到 javascript【英文标题】:Pass JSON from php to 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]。

【问题讨论】:

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

【讨论】:

以上是关于将 JSON 从 php 传递到 javascript的主要内容,如果未能解决你的问题,请参考以下文章

通过 POST 将 JSON 编码的变量从 PHP 传递到 Javascript

通过 AJAX 将两个 JSON 模型对象从 PHP 传递到 JS

将 JSON 传递给 PHP 不起作用

将 JSON 编码的 PHP 变量传递给 HighCharts

将 JSON 数据从 php 传递给 html-data 属性,然后传递给 Javascript

php 二维数组传递给 js 问题解决记录