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

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. Assigning retained object to unsafe property;object will be released after assignment

    解决方法,将变量 @property (assign) UILabel *titleView; 改为 @property (retain) UILabel *titleView;

  2. GinWin命令控制台执行指令

  3. Qt绘图之QGraphicsScene QGraphicsView QGraphicsItem详解

    Graphics View提供了一个界面,它既可以管理大数量的定制2D graphical items,又可与它们交互,有一个view widget可以把这些项绘制出来,并支持旋转与缩放.这个柜架也包 ...

  4. [转] 怎样在Ubuntu 14.04中搭建gitolite git服务器

    相比gitosis,gitolite的功能更为强大,支持对权限的细分控制,学习一下在最新版 的ubuntu 14.04 LTS中搭建gitolite服务器是非常有必要的,嘿嘿,一会属于我们自己的Git ...

  5. GUI编程笔记(java)11:使用Netbeans工具进行GUI编程

    Netbeans工具:是基于java语言进行GUI界面设计的工具 Visual Studio工具:是基于C#语言进行GUI界面设计的工具

  6. Python 记录(一)

    一开始没发现3.5与2.x版本的区别,导致浪费了很多时间在导包等问题上: 如: Pyhton2中的urllib2工具包,在Python3中分拆成了urllib.request和urllib.error ...

  7. Lamp环境部署指南

    1.安装apache 1)安装httpd: yum install httpd 2)启动httpd服务 service httpd start 2.安装mysql 1)安装mysql yum inst ...

  8. bootstrap01登录小例子

    引入需要的bootstrap文件 <!DOCTYPE html> <html> <head lang="en"> <meta charse ...

  9. 关于ajaxfileupload.js一些问题和上传图片就立即显示图片功能

    ajaxfileupload.js是上传文件的一个插件,最近碰到的一个问题是在谷歌浏览器上传文件之后,原文本框中的文件名称消失,网上搜了好长时间也没有十分满意的答案.无刷新上传文件我想到的只有ajax ...

  10. Java-Hirbernate小结大纲

    Hibernate Hibernate是一个开放源代码的对象关系映射框架 Hibernate的核心接口一共有6个,分别为:Session.SessionFactory.Transaction.Quer ...