将 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 变量传递给 HighCharts