Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery模板数据显示问题_Javascript_Jquery_Jquery Plugins - Fatal编程技术网

Javascript jQuery模板数据显示问题

Javascript 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>" +

我一直在努力让jQuery.tmpl()使用通过JSTL创建的JSON文件填充JSP页面

JSON(/misc/managed_solutions/results.htm):

jQueryJS

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