1

如果这是一个多余的问题,请让我知道并指出我那里,但我没有找到确切的问题/答案组合,也没有找到两者的混合。

我在 jquery 中有一些从 php 页面调用函数的 ajax。如果没有车把,json 数据会很好地返回。那里没有问题。但是,我似乎无法让 ajax 将我的结果写入车把模板。这是我现在拥有的代码:

$.ajax({
type: "post",
    url: "../includes/db_functions.inc.php",
    data: ({ p : p, p2 : p2, f : f }),
    dataType: "json",
    success: function(results){
$.each(results, function(i, item){
     var context = [ 
     {
            id : item[i].id, 
            clock_number : item[i].clock_number,
     }
    ],
    template = Handlebars.compile( $('#template').html() );
    $('table.entries').append( template(context) );
});
}
});

有人知道我在这里可能会错过什么吗?我 99% 确定它在上下文区域中,但只是没有找到它。

[编辑]

<table class="entries">
    <script id="template" type="text/x-handlebars-template">
            <tr>
                <td>{{id}}</td>
                <td>{{clock_number}}</td>
            </tr>
    </script>
</table>
4

2 回答 2

2

Handlebars - Getting Started 开始,我会说,省略数组并仅使用对象作为上下文

var context = {
    id : item[i].id, 
    clock_number : item[i].clock_number,
},
template = Handlebars.compile($('#template').html());
$('table.entries').append(template(context));

在 ajaxsuccess代码中,有对$.each(results, function(i, item) {...}). 在这种情况下,item已经是i第 th 个元素,如果results是一个数组。也许你可以把它减少到

success: function(results) {
    var template = Handlebars.compile($('#template').html());
    $.each(results, function(i, context) {
        $('table.entries').append(template(context));
    });
}
于 2013-04-08T20:55:43.330 回答
0

好的,所以这里实际上有几件事是错误的。

首先,我在表单本身中有一个错字,虽然它没有解决问题会导致我找不到修复程序。

其次,由于某种原因,它不能使用 $('#submit').on("click", function()) 它只是不喜欢它。我将其更改为 $('#textbox).on("blur", function()) 并立即开始从成功函数中获取结果。

第三,是的,我不知道这是否真的是一个问题,但它有效,所以我称它为答案的一部分。使用 $.each 执行 @Olaf Dietsche 的操作,如下所示:

$.each(results, function(i, context){
   $('div.entry').append( template(context) );
});
于 2013-04-09T19:04:38.373 回答