【问题标题】:Mustache.to_html() returning an empty stringMustache.to_html() 返回一个空字符串
【发布时间】:2015-10-19 10:12:33
【问题描述】:

之前有人问过这个问题,但没有得到答案。我有一个 php 文件,它将一个 json 对象发送到一个 javascript 文件,该文件应该使用模板呈现它并将其显示在 div 上。问题是,函数 Mustache.to_html() 返回空。谁能告诉我我做错了什么。这是我的代码。

{

    $(":button").click(function(){
    var cat = $(this).attr("name");

    $.get("trier.php",{input: cat}, function(data){
            alert(data);
            var template = $('#templabel').html();
            console.log(template);
            var html = Mustache.to_html(template, data);
            console.log(html);
            $('#feedback2').html(data);

    }); 
});

}

javascript 将数据发送到这个 php 文件,该文件发回一个 json 对象

{

if(isset($_GET['input'])){
    $catt = $_GET['input'];

        $info = "SELECT * FROM books WHERE (Category = '$catt')";
        $information = mysqli_query($conn,$info);
        $arraay = array();

        while($r = mysqli_fetch_assoc($information)){
            $arraay[] = $r;
        }
        $jason = json_encode($arraay);
        $jason = '{"arraay":'.$jason."}";

        echo $jason;
    }

}

然后,javascript 文件会将使用 mustache 模板呈现的 json 对象发送到 html 文件,发送到 id = "feedback2" 的标签。但显示的是原始 json,而不是模板。我应用 Mustache.to_html 函数后的第二个 console.log 返回一个空字符串。我做错了什么?

模板的console.log的输出是

{{#arraay}}
        <div>
            <h2> {{Title}}</h2>
            <p>{{Course}}</p>
            <p>{{Category}}</p>
        </div>
    {{/arraay}}

并且数据的警报是 {“arraay”:[{“标题”:“算法”,“课程”:“CSI241”,“类别”:“科学”},{“标题”:“流体动力学”,“课程”:“PHY345”, "类别":"科学"}]}

【问题讨论】:

  • 我们能看到console.logdatatemplate 打印的内容吗?
  • 只需将它们都编辑到您的问题中,不要尝试在 cmets 中提交它们...

标签: javascript jquery json mustache


【解决方案1】:

为我工作:

var data = {"arraay":[{"Title":"Algorithms","Course":"CSI241","Category":"science"},{"Title":"Fluid dynamics","Course":"PHY345","Category":"science"}]};
var template = document.getElementById('template').innerHTML;
var html = Mustache.to_html(template, data);
document.getElementById('render').innerHTML = html;
<script src="https://cdnjs.cloudflare.com/ajax/libs/mustache.js/2.2.0/mustache.min.js"></script>
<template id="template">
  {{#arraay}}
        <div>
            <h2> {{Title}}</h2>
            <p>{{Course}}</p>
            <p>{{Category}}</p>
        </div>
  {{/arraay}}
</template>

<div id="render">
</div>

【讨论】:

  • 小胡子标签是在最上面的函数之前还是之后?
  • 这只是一个事实的证明,如果templatedata 如您所说的那样显示在控制台上,那么渲染应该没有理由为空;你的一个假设很可能是错误的。 (在这种特定情况下,代码将在 HTML 已经全部输入时执行;但这与此处无关。)
猜你喜欢
  • 1970-01-01
  • 2019-10-29
  • 2011-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多