我正在使用Grails'标签中的g:remotelink在下拉菜单中执行一个ajax请求:
<ul class="nav navbar-nav navbar-right">
<li class="dropdown">
<g:remoteLink class="dropdown-toggle" data-toggle="dropdown"
controller="mystuff" action="items" update="itemsListMenu">Items<b class="caret"></b></g:remoteLink>
<ul id="itemsListMenu" class="dropdown-menu">
</ul>
</li>
</ul>
它工作正常,但我想在第一次按下拉下拉菜单时才开始请求,而不是每次打开或关闭菜单时。 我在Grails的remotelink文档中读到可以使用onSuccess / onLoaded / onComplete / etc函数,但我不确定最好的方法是什么。 有什么想法吗?
更新
按照约翰史密斯的建议,我添加了这个:
<g:remoteLink id="myButton" onSuccess="jQuery('#myButton').attr('onclick',' ')" ... >
答案 0 :(得分:0)
grails remoteLink
创建一个JQuery Ajax请求,所以使用jquery我会做这样的事情:
// first set loaded to false
var loaded = false;
// if not loaded execute ajax request
if(!loaded){
$.ajax({
type:'POST',
url:"/mystuff/items",
success:function(data){
$("#itemsListMenu").html(data);
}
}).done(function(){
// when done set loaded to true.
loaded = true;
});
}
答案 1 :(得分:0)
如果要将onsuccess事件处理程序与样式一起使用,并且如果要包含jquery 你去吧
function killLink(element) {
element.attr("onclick"," ");
}
此函数将简单地删除grails从标记创建的onclick ajax处理程序
你的gsp看起来像这样
<g:remoteLink class="dropdown-toggle" data-toggle="dropdown"
controller="mystuff" onsuccess="killLink(this)" action="items" update="itemsListMenu">Items<b class="caret"></b></g:remoteLink>