使用AJAX调用获取数据并使用Mustache进行模板化

时间:2013-11-09 12:19:32

标签: c# jquery ajax asp.net-mvc mustache

我正在尝试通过客户端的AJAX调用来缓和数据。数据存在于data函数的success参数中,但不知何故它不会“看到”它。它不显示应放在模板中的数据。

这是控制器:

[HttpPost]
public object SetFilters(dynamic param)
{
     var t = _servrep.GetAvailableServices(param.filters);
     return Enumerable.Select(t,(Func<dynamic, dynamic>) 
                   (x => new { x.Name, x.Comments }));
 } 

这是AJAX调用的成功函数:

success: function (data) 
{
    //debugger;
    //var sdata = JSON.stringify(data);
    var template = $('#serviceTemplate').html();
    var html = Mustache.to_html(template, data);
    $('#servicePlaceholder').html(html);
},

当我取消注释debugger函数中的success语句时,data如下所示:[[object Object],[object Object],[object Object],[object Object]]

当我展开它时,我确实看到键值对NameComments带有值。

我错过了什么?

[编辑]

<script id="serviceTemplate" type="text/template">
    <li>
        <h4>{{Name}}</h4>
        <div>
            {{Comments}}

        </div>
    </li>
</script>

1 个答案:

答案 0 :(得分:1)

看起来你有一个对象数组。也许在将数据传递给Mustache之前尝试索引数据。

 var html = Mustache.to_html(template, data[0]);

或者你可以尝试循环每一个。我不太熟悉胡子语法,但看起来应该是这样的

//JS
var html = Mustache.to_html(template, {data: data});

//template

{{#data}}
    <p>{{name}}</p>
    <p>{{comments}}</p>
{{/data}}