搞了两三天的问题,今天解决了。总结下:

  1. function reportGrpChange(cuid, title){
  2. document.getElementById('reportFrameDiv').innerHTML="";
  3. var loc = window.location + '';
  4. var reg1 = new RegExp('cuid=[^&]*');
  5. //用于解决报表组中某张报表维度切换后再切换报表造成的当前报表没有选中样式
  6. var reg2 = new RegExp('&currentCuid=[^&]*');
  7. loc = loc.replace(reg1, "cuid=" + cuid).replace(reg2, "");
  8.  
  9. var tree = window.parent.cognosLfTree;
  10. tree.loader.dataUrl = "engine!queryCognosLP.action?cuid=" + cuid+ "&t=" + Math.random()+ "&temp=" + new Date().getTime();
  11. Ext.Ajax.request({
  12. method : 'GET',
  13. url : "engine!queryCognosLP.action?cuid=" + cuid+ "&t=" + Math.random()+ "&temp=" + new Date().getTime(),
  14. callback : function(options, success, response) {
  15. var rst = Ext.decode(response.responseText);
  16. tree.setRootNode(rst);
  17. tree.root.reload();
  18. }
  19. });
  20.  
  21. //解决左面板维度异步请求不能刷新的问题,先刷新左面板维度,报表延迟200ms后再打开
  22. setTimeout(function(){
  23. window.location = loc;
  24. },200);
  25. }

  1.var tree = window.parent.cognosLfTree;  //需要从父框架中引用子框架中的cognosLfTree控件对象,这也研究了好半天

  2.想通过点击按钮发出ajax异步请求刷新左面板维度的同时,右边报表也能再重新打开。但发现IE浏览器很多时候左面板维度不能更新,火狐浏览器和谷歌浏览器基本上能更新,但偶尔会有几次也不能更新。

  一开始以为是ajax请求在IE浏览器中存在缓存问题,参阅:http://blog.sina.com.cn/s/blog_6bcf42010100qfo9.html。试过这几种方法后,发现发到服务器后,IE中打开维度还是多次不能更新(本地IE打开多次也能更新,偶尔也不能更新)。

  又怀疑是否是Ext.Ajax.request本身框架的问题,想引用Jquery的ajax请求来试试,但行不通,因为有用到extjs的控件对象。

  之后又怀疑是否有跨域访问js的问题,因为右边打开报表重新发出了一次请求,且报表存放路径是在其他服务器上,想把左面板维度页面给嵌入到右边打开的报表页面,但这样工作量也比较高,想应该会有其他办法。

  最后想应该是ajax请求还未完成时,先调用了 window.location = loc 这条语句刷新右边的报表打开页面,然后再调用ajax异步请求,导致传过去的报表cuid还是没变,因此左面板维度这棵树展现的数据也跟着没变。想应该把右边报表打开给延迟,先调用ajax请求刷新左面板维度。 setTimeout()不怎么会用啊,太菜了。一开始用setTimeout(window.location = loc,200);发现在IE浏览器中报错,在其他浏览器也能运行。再百度,发现需要在里面用匿名函数来添加变量参数,参阅:http://baike.baidu.com/link?url=FF0WJ5en5almXYhcOQgyAxCj0Nm3t7MAjmr2FQiEyu587Xxpca4zpDBjJ3Xozqn0rzTpqu5jlBUwxcrcIreFlq。改成: setTimeout(function(){window.location = loc;},200) 即可。OK,大功告成!哎,还是需要多加练习啊。。。

ajax异步请求不能刷新数据的问题的更多相关文章

  1. AJAX异步请求,局部刷新

    AJAX异步请求,局部刷新 window.onload=function(){ //dom事件,页面加载完成执行如下函数 doGetObjects(); } function doGetObjects ...

  2. 【Spring学习笔记-MVC-5】利用spring MVC框架,实现ajax异步请求以及json数据的返回

    作者:ssslinppp      时间:2015年5月26日 15:32:51 1. 摘要 本文讲解如何利用spring MVC框架,实现ajax异步请求以及json数据的返回. Spring MV ...

  3. 关于ajax异步请求不到数据的问题 302跨域请求

    项目大致问题是这样的 在线咨询模块的数据是通过ajax异步加载来请求到数据,然后动态解析并且显示 前台页面的请求代码 后台action: 另外就是这个项目还有一个登陆权限的认证,如果不登录后台或者登录 ...

  4. JS Ajax异步请求发送列表数据后面多了[]

    还在苦逼的写代码,这里就不详细了,直接抛出问题: 如图所示: 前端ajax请求向后端发送数据的时候,给key添加了[]出现很多找不到原因, 后面在说 解决方法: 暂时先这样记录一下,下次方便查找,好了 ...

  5. jquery的ajax异步请求接收返回json数据

    http://www.jb51.net/article/51122.htm jquery的ajax异步请求接收返回json数据方法设置简单,一个是服务器处理程序是返回json数据,另一种就是ajax发 ...

  6. 09.VUE学习之watch监听属性变化实现类百度搜索栏功能ajax异步请求数据,返回字符串

    cmd下安装axios npm install axios 安装好后,会多出node_modules文件夹 思路: 监听data里的word改变时,发送ajax异步请求数据, 把返回的数据赋值给dat ...

  7. ajax异步请求数据

    源码1: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  8. MVC&WebForm对照学习:ajax异步请求

    写在前面:由于工作需要,本人刚接触asp.net mvc,虽然webform的项目干过几个.但是也不是很精通.抛开asp.net webform和asp.net mvc的各自优劣和诸多差异先不说.我认 ...

  9. 原生ajax异步请求基础知识

    一.同步交互与异步交互的概念: * 同步交互:客户端向服务器端发送请求,到服务器端进行响应,这个过程中,用户不能做任何其他事情(只能等待响应完才能继续其他请求). * 异步交互:客户端向服务器端发送请 ...

随机推荐

  1. [React] React Fundamentals: Integrating Components with D3 and AngularJS

    Since React is only interested in the V (view) of MVC, it plays well with other toolkits and framewo ...

  2. [Flux] 3. Actions

    Actions contain no functionality, but rather describe an event in our application. In this lesson we ...

  3. phpmailer邮件类下载(转)

    PHPMailer是一个用于发送电子邮件的PHP函数包.它提供的功能包括:*.在发送邮时指定多个收件人,抄送地址,暗送地址和回复地址*.支持多种邮件编码包括:8bit,base64,binary和qu ...

  4. DIV布局之道三:DIV块的覆盖,DIV层遮盖其他DIV

    DIV布局网页的第三种方式:覆盖.DIV覆盖方式经常应用于网页弹出框的制作,例如在网店系统中,当用户没有登录时,点击购买,系统弹出一个登陆框. 请看代码: HTML部分: XML/HTML Code复 ...

  5. StarUML启动报RPC服务器不可用错误

    有很多人说启动 Remote Procedure Call (RPC) 服务即可,还是我试过了没有起作用,后来网友说,启动Print Spooler就可以了,暂时解决了问题.

  6. SQL语句之二建表

    use Test --进入需要建表的数据库if exists(select * from sysobjects where name='MyTable')--表是否已经存在drop table MyT ...

  7. Java操作hbase总结

    用过以后,总得写个总结,不然,就忘喽. 一.寻找操作的jar包. java操作hbase,首先要考虑到使用hbase的jar包. 因为咱装的是CDH5,比较方便,使用SecureCRT工具,远程连接到 ...

  8. hdoj 2191(多重背包)

    悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/ ...

  9. 解决linux .so的链接时符号依赖问题

    问题描述 target: a.out SO:libmyfile.so 依赖描述: a.out: libmyfile.so libmyfile.so:  libssl.so.1.0.0 libssl.s ...

  10. Xcode 使用自定义字体

    添加对应的字体(.ttf或.odf)到工程的resurce,使用cocos2d中的FontLabel库,FontLabel继承于UILabel,象UILabel一样使用就好了 fontName直接使用 ...