to_html()返回一个空字符串

Mustache.to_html() returning an empty string

本文关键字:一个 字符串 返回 html to      更新时间:2023-09-26

这个问题以前就有人问过,但没有得到答案。我有一个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文件,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,而不是模板化的。和第二个console.log后,我应用了小胡子。To_html函数返回一个空字符串。我做错了什么?

模板的console.log输出为

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

,数据的警报为{"arraay":[{"标题":"算法","课程":"CSI241","类别":"科学"},{"标题":"流体力学"、"课程":"PHY345","类别":"科学"}]}

适合我:

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>