1

これが冗長な質問である場合は、私に知らせてそこを指摘してください。ただし、正確な質問と回答の組み合わせも、2 つの混合物も見つかりません。

PHPページから関数を呼び出すjqueryに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番目の要素です。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()) に変更すると、すぐに成功関数から結果を取得し始めました。

第三に、ええ、これが実際に問題であったかどうかはわかりませんが、うまくいくので、答えの一部と呼んでいます。@Olaf Dietsche を $.each で実行すると、次のようになります。

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