2
我一直在努力讓jQuery.tmpl()使用我通過JSTL創建的JSON文件來填充JSP頁面。jQuery模板數據顯示問題
JSON(/misc/managed_solutions/results.htm):
var dataTable = [
{
firmName: "name",
portfolioName: "Fund Allocation Portfolio",
firmAum: "3.2394E8",
portfolioAum: "2.3659865E7",
objTypeDesc: "Capital Preservation/Current Income",
gipsFlg: "Yes",
inceptionDt: "01/01/2000",
stateProvCd: "CA",
pdfFileNm: "TremendousGrowth.pdf",
agencyNm1: "name",
agencyNm2: "name",
agencyNm3: "name",
agencyNm4: "name"
}
,
{
firmName: "name",
portfolioName: "Capital Allocation Portfolio",
firmAum: "4.2394E8",
portfolioAum: "4.3659865E7",
objTypeDesc: "Capital Appreciation - Aggressive",
gipsFlg: "Yes",
inceptionDt: "01/01/2005",
stateProvCd: "CA",
pdfFileNm: "CapitalAllocation.pdf",
agencyNm1: "name",
agencyNm2: "name",
agencyNm3: "name",
agencyNm4: "name"
}
,
{
firmName: "name",
portfolioName: "name",
firmAum: "2.2394E8",
portfolioAum: "1.3659865E7",
objTypeDesc: "Capital Appreciation - Moderate",
gipsFlg: "No",
inceptionDt: "01/01/2008",
stateProvCd: "TX",
pdfFileNm: "Global Core Equity.pdf",
agencyNm1: "name",
agencyNm2: "name",
agencyNm3: "name",
agencyNm4: "name"
}
];
jQuery的JS
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");
}
}
HTML
<table class="data-table tpm">
<tbody>
</tbody>
</table>
RESULT
<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
我看到你做了什麼在jsfiddle上工作,但它使用json作爲局部變量而不是外部文件,這不是我所需要的。我還注意到,當我從showPortfolio方法中刪除'()'時,我實際上什麼都沒有收到 - 甚至沒有標記。 – dylanmac
@dylanmac:根據你的問題來判斷,我以爲你認爲問題出現在'.tmpl()'調用中。爲了消除這種可能性,我將數據移入了局部變量。你的模板代碼工作正常,因此你的AJAX調用必須有問題。你有沒有看過FireBug,以確保你期望的數據回來?網頁上是否發生錯誤?你的成功回調是否被稱爲? –
是的,我認爲你是對的。數據被檢索,但成功函數沒有被調用。我添加了console.log並沒有輸出。到底是什麼(是的,我刪除了'()')? – dylanmac