我正在使用JSON和MUSTACHE,用于新网站中的模板。但我不知道如何从json数据中获取HTML。我在后端使用PHP,它作为API提供者工作。我对这个概念很陌生。 Evey的帮助和建议是欢迎的。
感谢。
我正在使用的代码::
<script>
// this is for base
this.get(/\#\/(.*)/, function (){
var send_url = '<?php echo $url?>sammy/' + this.params['splat'];
var context = this;
$.getJSON(send_url, function(data) {
var template = data.template;
context.renderEach('<?php echo $url?>mustache_templates/' + template + '', data.data).swap();
});
});
</script>
JSON数据类似于::
{"menu": {
"id": "file",
"string": "<a href=\"http:\/\/stackoverflow.com\/questions\/5335873\/how-to-get-html-from-json-data-using-mustache#xyz\">string</a>",
}}
MUSTACHE模板:
{{#string}}
<div>
{{string}}
</div>
{{/string}}
当前输出:
<a href="https://stackoverflow.com/questions/5335873/how-to-get-html-from-json-data-using-mustache#xyz">string</a>
需要输出:
谢谢你
答案 0 :(得分:11)
当前输出:
<a href="http://stackoverflow.com/questions/5335873/how-to-get-html-from-json-data-using-mustache#xyz">string</a>
这不是输出。你实际得到的是像
<a href="http://stackoverflow.com/questions/5335873/how-to-get-html-from-json-data-using-mustache#xyz">string</a>
当然,这与您在浏览器中发布的内容相似。默认情况下,Mustache HTML会转义所有变量,因此它们不会弄乱您的HTML。
在这种情况下,您不希望这样,因此您应该在模板中使用{{{string}}}
。一定要只使用可信变量,不要用它来输出任何用户输入。
答案 1 :(得分:0)
看一下PHP中的json_decode,它会为您提供一系列您(我猜想)可以提供给模板引擎的数据:
$json = <<< EOJ
{"menu": {
"id": "file",
"string": "<a href=\"http:\/\/stackoverflow.com\/questions\/5335873\/how-to-get-html-from-json-data-using-mustache#xyz\">string</a>",
}}
EOJ;
$json_parsed = json_decode($json_raw, TRUE); // return an array, not an object
DoYourMustacheThingWith($json_parsed);