2010-10-24 69 views
2

下面的代碼模板函數:jQuery的TMPL - 不工作

jQuery(document).ready(function($) { 
    function getBooks() { 
     var query = "ajax.php?do=allbooks"; 
      $.ajax({ 
       dataType: "jsonp", 
       url: query, 
       jsonp: "callback", 
       success: showBooks 
      }); 
    } 

    function showBooks(data) { 
    $("#bookTmpl").tmpl(data, { 
     getName: function() { 
      return 'bla'; 
     } 
    }).appendTo("#test"); 
    } 

    getBooks(); 
}); 

我所要做的是使用的getName() - 在我的模板函數。

讓我們假設我的模板看起來是這樣的:

<script id="bookTmpl" type="text/x-jquery-tmpl"> 
    <li> 
    ${title} by ${author}<br /> 
    Rating: ${rating} -> ${getName()} 
    </li> 
</script> 

我有什麼改變,使其工作?目前,該功能甚至沒有執行。其他一切正常。

回答

4

你只需要調整呼叫了一下,改變這一狀況,JSONP可能是有點矯枉過正:

${getName()} 

要這樣:

${this.getName()} 

You can test it out here

1

嘗試在$.ajax中附加error: fn回調並查看可能的錯誤。也許JSON格式不正確(你可以用jsonlint.org來檢查)。如果​​甚至沒有被調用,有什麼不對(404,JSON解析錯誤等)。

此外,如果你是從同一個域請求JSON(例如,你可以試試$.getJSONdataType: 'json'

+0

對不起,我有些誤讀你的問題。你的模板是否工作(除了方法)? – peol 2010-10-24 13:57:50

+0

是的,該模板的作品。 :-) – dmnkhhn 2010-10-24 19:38:23