2013-04-08 64 views
1

如果這是一個多餘的問題,請讓我知道並指出我在那裏,但我沒有找到確切的問題/答案組合或兩者的混合物。PHP,Ajax,JSON和把手

我在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> 
+0

我是唯一試圖做到這一點的猴子?大聲笑 – tattooedgeek 2013-04-09 17:03:47

回答

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)); 

在AJAX success代碼,還有調用$.each(results, function(i, item) {...}) 。在這種情況下,如果results是數組,則item已經是i th元素。也許你可以減少到

success: function(results) { 
    var template = Handlebars.compile($('#template').html()); 
    $.each(results, function(i, context) { 
     $('table.entries').append(template(context)); 
    }); 
} 
+0

我曾嘗試過,通過你張貼的把手頁面,但沒有喜悅。我再次嘗試過,但又沒有快樂。沒有把手很有趣,我可以毫無問題地顯示數據。我只想使用更多基於模板的解決方案。 – tattooedgeek 2013-04-08 20:59:41

+0

@tattooedgeek然後模板本身一定有問題。你可以在你的問題中顯示它嗎? – 2013-04-08 21:02:16

+0

添加了模板。 – tattooedgeek 2013-04-08 21:05:40

0

好吧,所以實際上有幾件事情在這裏錯了。

首先,我在表單本身有一個拼寫錯誤,雖然它沒有解決問題會導致我找不到修復。其次,由於某種原因,它不能使用$('#submit')。on(「click」,function()),它只是不喜歡它。我將它改爲$('#textbox).on(「blur」,function())並立即開始從成功函數獲取結果。

第三,是的好我不知道這是否是一個問題,但它起作用,所以我稱它爲答案的一部分。做什麼@Olaf Dietsche與$ .each,這樣的事情:

$.each(results, function(i, context){ 
    $('div.entry').append(template(context)); 
});