Grails 利用 Ajax 更新部分网页

Grails中要使用ajax技术,除了使用它提供的 remoteLink、formRemote和submitToRemote这几个由Grails提供的ajax功能外,也可以来点更直接的,下面就是例子:

在head部分,增加一行:
<g:javascript library="prototype" />
在文件中增加脚本函数的定义:
    <script type="text/javascript">
      function activetsc() {
          document.getElementById("idtsc").checked=true  //使得idtsc的选项被选择,这个与本主题无关。
      }
      function activedepart(obj,mypath) {            //第一个参数是调用的元素本身,第二个为路径
          document.getElementById("iddepart").checked=true   //使iddepart被选择
          var aass=mypath + '?checkdepart=' + obj.selectedIndex  //checkdepart是参数名这里只能传数值,中文还是有问题。
          new Ajax.Updater('iduser',aass,
               {asynchronous:true,evalScripts:true});   //调用 aass 的网址,更新iduser的内容(使用render就行)
          return false;
     }
    </script>

在网页中,使用onchange事件调用刚才定义的函数
    <select name="department" onchange="activedepart(this,'${createLink(action:/changedepart/)}')">
       ...
    </select>
在这里,将changedepart这个action用createLink函数转换为连接,一般形式是 /程序名/域名/action名 ,但如果使用 absolute 参数,调试没有问题,部署就会出错。
例如如果改成 createLink(action:/changedepart/,absolute:/true/),部署时竟然返回:
http://changeme/xxx/xxx/changdepart 。对出现changeme真是无语。

在changedepart action中,用render输出内容,替换原来iduser的元素,风格应尽量与iduser相同。在该action中,可以用params.checkdepart来读出参数内容,也就是那个obj.selectedIndex,但注意此时类型已变为字符串,要做转换才能当成数值。

posted on 2011-09-01 22:26 家1阳 阅读(623) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。

导航

<2011年10月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

统计

常用链接

留言簿(2)

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜