Как получить HTML из данных JSON, используя MUSTACHE? - PullRequest
6 голосов
/ 17 марта 2011

Я использую JSON и MUSTACHE для шаблонов на моем новом сайте. Но я не знаю, как я могу получить HTML из данных JSON. Я использую 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>",
}}

УСАДЬБА шаблон:

{{#string}}
<div>
{{string}}
</div>
{{/string}}

Токовый выход:

<a href="https://stackoverflow.com/questions/5335873/how-to-get-html-from-json-data-using-mustache#xyz">string</a>

Требуется вывод:

строка

Спасибо тебе

Ответы [ 2 ]

11 голосов
/ 28 апреля 2011

Токовый выход:

<a href="/5664354/kak-poluchit-html-iz-dannyh-json-ispolzuya-mustachexyz">string</a>

Это не выход.На самом деле вы получаете что-то вроде

&lt;a href=&quot;/5664354/kak-poluchit-html-iz-dannyh-json-ispolzuya-mustachexyz&quot;&gt;string&lt;/a&gt;

Что, конечно, похоже на то, что вы опубликовали в браузере.Усы HTML по умолчанию экранируют все ваши переменные, поэтому они не портят ваш HTML.

В этом случае вы этого не хотите, поэтому вам следует использовать {{{string}}} в шаблоне.Обязательно делайте это только с доверенными переменными, никогда не используйте его для вывода каких-либо пользовательских данных.

0 голосов
/ 17 марта 2011

Взгляните на json_decode в PHP, это даст вам массив ваших данных, которые вы (я полагаю) можете передать вашему шаблонизатору:

$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);
...