我有一个关于在java脚本函数中使用remoteFunction组件的问题;我使用的是Grails 1.3.7。
我在页面中有几个div,其中包含我想要更新的div。我想要更新的每个div都有自己的id(fullUrlSaProfilDivX),其中X是页面中的唯一ID。
我想更新两个div(一个接一个)。
我创建了一个java脚本函数:
<g:javascript>
function removeSelectedProfilAssoc(urlSaId, profilAssocId) {
${ remoteFunction (action:"delete", update:'fullUrlSaProfilDiv'+urlSaId, controller:"profilAssoc", params:'\'id=\'+profilAssocId', options:[asynchronous:false]) };
${ remoteFunction (action:"listUrlSaProfil", controller:"profilAssoc", update:'lightUrlSaProfilDiv'+urlSaId, params:'\'urlSa.id=\'+urlSaId') };
};
</g:javascript>
通过链接调用:
<a href="javascript:void(0)" class="icons_delete" onclick="removeSelectedProfilAssoc(${profilAssocInstance?.urlSa?.id}, ${profilAssocInstance?.id})"></a>
我想更新与按钮链接的div(具有唯一ID的链接)。
我无法弄清楚为什么在生成的页面中我得到null而不是id并且div不刷新:
function removeSelectedProfilAssoc(urlSaId, profilAssocId) {
new Ajax.Updater('fullUrlSaProfilDivnull','/_Pong2WAR/profilAssoc/delete',{asynchronous:false,evalScripts:true,parameters:'id='+profilAssocId});;
new Ajax.Updater('lightUrlSaProfilDivnull','/_Pong2WAR/profilAssoc/listUrlSaProfil',{asynchronous:true,evalScripts:true,parameters:'urlSa.id='+urlSaId});;
};
我做错了吗?如何传递我想刷新的div的id并将其刷新?
感谢您一看!
本杰明
答案 0 :(得分:1)
啊哈哈,你正在混淆javascript和gsp。我也做了很多次,找出来可能很棘手!
在您的情况下urlSaId
是 javascript var,但您在 GSP 中使用它函数调用,因此它将是null
....
不幸的是,解决方法并不容易,因为remoteFunction不会让你在更新中正确连接javascript变量,因为你想要的是:
new Ajax.Updater('fullUrlSaProfilDiv'+urlSaId,'/_Pong2WAR/profilAssoc/delete',{asynchronous:false,evalScripts:true,parameters:'id='+profilAssocId});
我建议直接构建此Ajax.Updater(..)
而不使用remoteFunction(或类似的东西):
<g:javascript>
function removeSelectedProfilAssoc(urlSaId, profilAssocId) {
new Ajax.Updater('fullUrlSaProfilDiv'+urlSaId,'${createLink(action:"delete", controller:"profilAssoc")}',{asynchronous:false,evalScripts:true,parameters:'id='+profilAssocId});
new Ajax.Updater('lightUrlSaProfilDiv'+urlSaId,'${createLink(action:"listUrlSaProfil", controller:"profilAssoc")}',{asynchronous:true,evalScripts:true,parameters:'urlSa.id='+urlSaId});;
};
</g:javascript>
现在请注意,我总是使用jquery,它简化了GSP中的所有ajax。
答案 1 :(得分:0)
通过
替换remoteFunction jQuery.ajax({
type:'POST',
data:'territorio='+territorio_id+'&anho='+anho+'&id='+firstIndicador+'&div='+divId+'&divmap='+divmap,
url:'/observatoriograils/eje/indGeneralporAnhoyTerritorio',
success:function(data,textStatus){jQuery('#'+divId).html(data);},
error:function(XMLHttpRequest,textStatus,errorThrown){}});
其中data是参数,url是/ url / controller / function,divId是更新div的名称