Javascript jQuery模板数据显示问题
我一直在努力让jQuery.tmpl()使用通过JSTL创建的JSON文件填充JSP页面 JSON(/misc/managed_solutions/results.htm): jQueryJSJavascript jQuery模板数据显示问题,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,我一直在努力让jQuery.tmpl()使用通过JSTL创建的JSON文件填充JSP页面 JSON(/misc/managed_solutions/results.htm): jQueryJS function getPortfolioData( start ) { var markup = "<tr>" + "<td><p>${firmName}</p>" +
function getPortfolioData( start ) {
var markup = "<tr>" +
"<td><p>${firmName}</p>" +
"<a href='/path/to/content/${pdfFileNm}'>${portfolioName}</a>" +
"</td>" +
"<td>" +
"<p>${firmAum}</p>" +
"<p>${portfolioAum}</p>" +
"</td>" +
"<td>" +
"<p>${objTypeDesc}</p>" +
"</td>" +
"<td>" +
"<p>${gipsFlg}</p>" +
"</td>" +
"<td>" +
"<p>${inceptionDt}</p>" +
"</td>" +
"<td>" +
"<p>${agencyNm1}</p>" +
"<p>${agencyNm2}</p>" +
"<p>${agencyNm3}</p>" +
"<p>${agencyNm4}</p>" +
"</td>" +
"<td>" +
"<p>${stateProvCd}</p>" +
"</td>" +
"</tr>";
$.template( "portfoliosTemplate", markup );
$.ajax({
dataType: "jsonp",
url: '/misc/managed_solutions/results.htm?startPosition=' + start + '&viewRows=3',
jsonp: "$callback",
success: showPortfolio()
});
function showPortfolio(dataTable) {
// Remove current set of portfolio items
$( ".data-table.tpm tbody" ).empty();
// Render the template items for each portfolio
$.tmpl( "portfoliosTemplate", dataTable ).appendTo( ".data-table.tpm tbody" );
}
}
函数getPortfolioData(开始){
var markup=“”+
“${firmName}”+
"" +
"" +
"" +
“${firmAum}”+
“${portfolioAum}”+
"" +
"" +
“${objTypeDesc}”+
"" +
"" +
“${gipsFlg}”+
"" +
"" +
“${inceptionDt}”+
"" +
"" +
“${agencyNm1}”+
“${agencyNm2}”+
“${agencyNm3}”+
“${agencyNm4}”+
"" +
"" +
“${stateProvCd}”+
"" +
"";
$.template(“PortfolioTemplate”,标记);
$.ajax({
数据类型:“jsonp”,
url:'/misc/managed_solutions/results.htm?startPosition='+start+'&viewRows=3',
jsonp:“$callback”,
成功:showPortfolio()
});
函数showPortfolio(数据表){
//删除当前的投资组合项目集
$(“.data-table.tpm tbody”).empty();
//呈现每个公文包的模板项
$.tmpl(“portfoliosTemplate”,dataTable).appendTo(“.data-table.tpm tbody”);
}
}
HTML
结果
<table class="data-table tpm">
<tbody>
<tr>
<td>
<p></p>
<a href="/path/to/content/"></a>
</td>
<td>
<p></p>
<p></p>
</td>
<td>
<p></p>
</td>
<td>
<p></p>
</td>
<td>
<p></p>
</td>
<td>
<p></p>
<p></p>
<p></p>
<p></p>
</td>
<td>
<p></p>
</td>
</tr>
</tbody>
</table>
我已经设法让html标记显示在tbody中,但没有一个值。此外,标记只显示一次,告诉我没有迭代发生
有什么想法吗
DKM考虑到您的标记、数据和JavaScript,您的代码运行良好: 示例: 我有一种预感,您看到的问题来自您的AJAX调用:
$.ajax({
dataType: "jsonp",
url: '/misc/managed_solutions/results.htm?startPosition=' + start + '&viewRows=3',
jsonp: "$callback",
success: showPortfolio()
});
具体来说,success
属性设置为执行showPortfolio()
方法的结果。这会导致模板立即渲染(没有数据)。我想你真的想要:
success: showPortfolio
也就是说,引用您的
showPortfolio
方法,而不是执行它的结果。我看到您所做的工作在JSFIDLE上确实有效,但它将json用作局部变量,而不是我不需要的外部文件。我还注意到,当我从showPortfolio方法中删除“()”时,实际上我的tbody中没有任何内容-甚至没有标记。@dylanmac:从你的问题判断,我认为你认为问题出在.tmpl()
调用上。为了消除这种可能性,我将数据移动到一个局部变量中。您的模板代码工作正常,因此AJAX调用一定有问题。您是否查看了FireBug以确保您期望的数据能够返回?页面上是否出现任何错误?你的成功电话有人打过吗?是的,我想你是对的。已检索数据,但未调用success函数。我向其中添加了console.log,但没有任何输出。到底是什么(是的,我删除了“()”)?你确定请求需要JSONP吗?JSONP通常用于跨域请求。如果您的请求是指向本地URL,那么没有它您应该可以。(只需将datatype
更改为json
并删除jsonp
参数)仍然没有更改。函数就是没有被调用。
$.ajax({
dataType: "jsonp",
url: '/misc/managed_solutions/results.htm?startPosition=' + start + '&viewRows=3',
jsonp: "$callback",
success: showPortfolio()
});
success: showPortfolio