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

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

  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. [CSS] @keyframes

    @keyframes swing{ 0% { transform: rotate(0deg)} 100% {transform: rotate(-30deg)} } #sweetlandia{ ani ...

  2. POJ 1001 Exponentiation 无限大数的指数乘法 题解

    POJ做的非常好,本题就是要求一个无限位大的指数乘法结果. 要求基础:无限大数位相乘 额外要求:处理特殊情况的能力 -- 关键是考这个能力了. 所以本题的用例特别重要,再聪明的人也会疏忽某些用例的. ...

  3. Qt 学习之路 :Qt Quick Controls

    自 QML 第一次发布已经过去一年多的时间,但在企业应用领域,QML 一直没有能够占据一定地位.很大一部分原因是,QML 缺少一些在企业应用中亟需的组件,比如按钮.菜单等.虽然移动领域,这些组件已经变 ...

  4. Json字符串与字典互转

    #pragma mark 转换json字符串 +(NSString *)toJSON:(id)aParam { NSData   *jsonData=[NSJSONSerialization data ...

  5. Ubuntu16.04LTS安装

    1. 制作u盘启动盘 下载ubuntu-16.04-desktop-amd64.iso文件后,使用u盘启动盘制作工具:Win32DiskImager(14.04LTS后都需要用到这工具制作:https ...

  6. RPM工具

    一.RMP工具管理RPM包 rpm命令是RPM软件包的管理工具.rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎.逐渐 ...

  7. Android Studio创建工程时一直卡在下载Gradle

    一直提示这个进度条,查了不少资料,有的说FQ,有的说下载gradle后运行下bin里面的批处理,再在环境变量里Path中加入路径,我都试了,都不和... 按理说FQ了可以下载了吧,但是半天没下载完,一 ...

  8. C#中的三种 加密解密

    刚刚学会的C#的加密与解密(三种)MD5加密/RSA加密与解密/DES加密.也是刚刚申请的blog随便发布一下. (一).MD5加密 MD5 md5 = new MD5CryptoServicePro ...

  9. Android之获取本地图片并压缩方法

    这两天在做项目时,做到上传图片功能一块时,碰到两个问题,一个是如何获取所选图片的路径,一个是如何压缩图片,在查了一些资料和看了别人写的后总算折腾出来了,在此记录一下. 首先既然要选择图片,我们就先要获 ...

  10. ToString格式.

    C 货币 2.5.ToString("C") ¥2.50 D 十进制数 25.ToString("D5") 00025 E 科学型 25000.ToString ...