0

我正在将 grails 应用程序从 grails 2.5.4 升级到 3.1.9,我在 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>

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

4

1 回答 1

1

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

于 2016-10-04T19:12:38.180 回答