Grails从2.x升级到3.x.升级后,Ajax不呈现模板

时间:2016-10-03 21:15:46

标签: jquery ajax grails grails3

我正在从grails 2.5.4到3.1.9升级grails应用程序,我遇到了ajax调用问题。

我的应用程序中有gsp模板,它使用ajax请求以异步方式从服务器加载数据。这是其中之一。

                           

以下javascript调用会激活ajax请求。

$(document).ready(function () {

    $(".chosen-select").chosen();
    $(".automaticAjaxLoad").each(function () {


        var url = $(this).attr("ajaxLoadingUrl");

        if (url != "") {

            $(this).load(url);
        }
    });
});

这成功调用了以下控制器操作。

def getLocalitiesWithCount() {
    def localitiesList = Locality.list(sort: "posOrder", order: "desc")
    def localitiesCountList = []
    localitiesList.each { locality ->
        def c = JobOffer.withCriteria() {
            createAlias("positionLocality", "_positionLocality", CriteriaSpecification.LEFT_JOIN)
            eq("_positionLocality.id", locality.id)
            //between("l.accessDate", today, today + 1)

            gt('willExpire', new Date())
            isNotNull('datePublished')

            projections {
                // countDistinct("id")
                rowCount()
            }
        }
        def jobCountMap = [:]

        jobCountMap.put("i18NameFull", locality.i18NameFull)
        jobCountMap.put("i18Name", locality.i18Name)
        jobCountMap.put("id", locality.id)
        jobCountMap.put("name", locality.name)
        jobCountMap.put("count", c.first())

        localitiesCountList.push(jobCountMap)

        log.error('Localities count ' + localitiesCountList.size());

    }
    render(view: '/ajax/localitiesWithCount', model: [localitiesCountList: localitiesCountList])
}

直到这一刻,一切都按预期运作。它应该跟随gsp模板呈现,但它没有。它应该属于的地方是空的,控制台中没有错误

<h4> ${message(code: "localities.header")} </h4>
    <hr>


        <ul style="font-size: 85%; margin: 0; list-style: none;">
            <g:each in="${localitiesCountList}"
                    status="i" var="localityInstance">

                <g:if test="${localityInstance.count != 0}" >
                <li>

                    <g:link controller="jobOffer" action="index" params="[positionLocalities: localityInstance.id]">
                        <h8>
                            ${message(code: localityInstance.i18NameFull)}

                         [${localityInstance.count}]
                        </h8>
                    </g:link>

                </li>

                </g:if>

            </g:each>

        </ul>

我不得不将资源从资源插件重新加载到资产管道,所以我想可能存在问题,但我不知道问题出在哪里。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

由于您想要渲染模板(例如HTML片段而不是整页),您应该使用render(template: '/ajax/localitiesWithCount', model: [localitiesCountList: localitiesCountList])并确保您的GSP名为_localitiesWithCount.gsp,因为所有模板都必须以下划线。