Chinaunix首页 | 论坛 | 博客
  • 博客访问: 482187
  • 博文数量: 95
  • 博客积分: 2117
  • 博客等级: 大尉
  • 技术积分: 2301
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-16 21:10
个人简介

辽宁铁岭人,现居大连。1970年生。 先后供职于 中国国际海运网、大连学堂科技、大连华仁视线网络科技有限公司、大连中科海云科技有限公司,任职技术总监。 精通PHP、JAVA、Javascript、HTML、CSS等网络编程技术及Linux操作系统。 精通面向对象编程、设计模式、重构及互联网产品设计。

文章分类

全部博文(95)

文章存档

2013年(31)

2012年(2)

2011年(34)

2010年(25)

2008年(3)

分类: 系统运维

2010-12-20 14:14:31

页面上有一个用来新建的表单,希望每次都能从服务器获取一个新的表单页,在dataGrid中使用如下代码:

<script type="text/javascript"><!--
$(function() {
......
    toolbar: [{
      id: 'myadd',
      text: '新建',
      iconCls: 'icon-add',
      handler: function() {
        $('#mywindow').window({
            href: '__APP__/newform'
        });
        $('#mywindow').window('open');
      }
    }
......
});
--></script>

发现open动作只有在第一次时会向服务器发出请求,之后就只使用第一次请求后得到的window内容,这样,如果填写过这个表单,关闭之后,再点“新建”,上次填写的数据仍然残留。
修改代码,使其在打开之后刷新:

<script type="text/javascript"><!--
$(function() {
......
    toolbar: [{
      id: 'myadd',
      text: '新建',
      iconCls: 'icon-add',
      handler: function() {
        $('#mywindow').window({
            href: '__APP__/newform'
        });
        $('#mywindow').window('open');
        $('#mywindow').window('refresh');
      }
    }
......
});
--></script>

又有了新的问题,虽然在第一次点击“新建”之后,填写表单,关闭,再点“新建”时一切正常,但是第一次点新建时,会加载两次window内容。
究其原因,是因为首次open时会向服务器发出请求,而紧接着refresh又向服务器发出了一次请求。
将代码修改为第一次新建时调用open,之后的新建调用refresh,发现没有open的refresh不能正常获取url指向的数据。
再次修改代码,利用了一个标志变量,在第一次新建时仅调用open,之后的新建顺序调用open和refresh,问题解决。

<script type="text/javascript"><!--
$(function() {
    var windowOpend = false;
......
    toolbar: [{
      id: 'myadd',
      text: '新建',
      iconCls: 'icon-add',
      handler: function() {
        $('#mywindow').window({
            href: '__APP__/newform'
        });
        $('#mywindow').window('open');
        if (windowsOpened) $('#mywindow').window('refresh');
        if (!windowsOpened) windowsOpened = true;
      }
    }
......
});
--></script>


阅读(4381) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~