Grails remoteLink ajax问题填充JQuery手风琴

时间:2012-12-31 18:27:19

标签: ajax jquery-ui grails grails-2.0

遵循Jquery的简单示例:Accordion Example

使用grails中的remoteLink函数( AJAX ),信息将从控制器中拉回并发送回GSP,这样可以正常工作。但我希望将这些数据放在Accordion容器中...点击此处查看当前功能的screenshot

(事件创建页面呈现表单模板)_form - GSP:

<g:remoteLink controller="event"  action="showContacts" method="GET" update="divContactList">Show Contacts!</g:remoteLink>

<div id="divContactList">
     <g:render template="contactListAjax" model="[contactList: contactList]" />
</div>

<script type="text/javascript">
$(document).ready(function()
{
    alert("Checking if I'm ready :)");

    $( "#accordion" ).accordion({
        header: 'h3',
        collapsible: true
    });
});
</script>

_contactListAjax - GSP模板

<div id="accordion">
<g:each in="${contactList}" status = "i" var="contact">
    <h3>${contact.contactForename}</h3>
    <div><p>${contact.email}</p></div>
</g:each>
</div>

我不太确定我在这里做错了什么,因为我用div手风琴包装数据,但是没有加载。请参阅上面的屏幕截图链接,了解当前正在发生的事情。

更新

事件(标准生成的CRUD,仅显示重定位导入的位置)创建 - GSP

<link rel="stylesheet" href="${resource(dir: 'css', file: 'jquery.ui.accordion.css')}"/>
<g:javascript src="jquery-1.7.1.min.js"></g:javascript>
<g:javascript src="jquery-ui.min.js"></g:javascript>

2 个答案:

答案 0 :(得分:0)

尝试更换:

$(function() {
    $( "#accordion" ).accordion({
        collapsible: true
    });
})

$( "#accordion" ).accordion({
    collapsible: true
});

编辑:

请求完成后,您无法使用<r:script />标记。服务器已经布置了所有资源。将其更改为标准的javascript标记。此外,您的javascript和css文件应该包含在页面的其他位置。

答案 1 :(得分:0)

我解决了这个问题......(井哈克&Slash现在......不是最好的,但现在唯一可行的解​​决方案

var whatever是由AJAX生成的存储HTML,并放置在divContactList上的update function中。手风琴被删除然后重建(不是我意识到的最佳方法

var whatever = $('#divContactList').html();

$('#accordion').append(whatever)
         .accordion('destroy').accordion({
             collapsible: true,
             active: false
        });