jQuery的TMPL - 不工作

问题描述:

下面的代码模板函数: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> 

我有什么改变,使其工作?目前,该功能甚至没有执行。其他一切正常。

你只需要调整呼叫了一下,改变这一状况,JSONP可能是有点矫枉过正:

${getName()} 

要这样:

${this.getName()} 

You can test it out here

尝试在$.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