ajax异步请求不能刷新数据的问题
搞了两三天的问题,今天解决了。总结下:
- function reportGrpChange(cuid, title){
- document.getElementById('reportFrameDiv').innerHTML="";
- var loc = window.location + '';
- var reg1 = new RegExp('cuid=[^&]*');
- //用于解决报表组中某张报表维度切换后再切换报表造成的当前报表没有选中样式
- var reg2 = new RegExp('¤tCuid=[^&]*');
- 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异步请求不能刷新数据的问题的更多相关文章
- AJAX异步请求,局部刷新
AJAX异步请求,局部刷新 window.onload=function(){ //dom事件,页面加载完成执行如下函数 doGetObjects(); } function doGetObjects ...
- 【Spring学习笔记-MVC-5】利用spring MVC框架,实现ajax异步请求以及json数据的返回
作者:ssslinppp 时间:2015年5月26日 15:32:51 1. 摘要 本文讲解如何利用spring MVC框架,实现ajax异步请求以及json数据的返回. Spring MV ...
- 关于ajax异步请求不到数据的问题 302跨域请求
项目大致问题是这样的 在线咨询模块的数据是通过ajax异步加载来请求到数据,然后动态解析并且显示 前台页面的请求代码 后台action: 另外就是这个项目还有一个登陆权限的认证,如果不登录后台或者登录 ...
- JS Ajax异步请求发送列表数据后面多了[]
还在苦逼的写代码,这里就不详细了,直接抛出问题: 如图所示: 前端ajax请求向后端发送数据的时候,给key添加了[]出现很多找不到原因, 后面在说 解决方法: 暂时先这样记录一下,下次方便查找,好了 ...
- jquery的ajax异步请求接收返回json数据
http://www.jb51.net/article/51122.htm jquery的ajax异步请求接收返回json数据方法设置简单,一个是服务器处理程序是返回json数据,另一种就是ajax发 ...
- 09.VUE学习之watch监听属性变化实现类百度搜索栏功能ajax异步请求数据,返回字符串
cmd下安装axios npm install axios 安装好后,会多出node_modules文件夹 思路: 监听data里的word改变时,发送ajax异步请求数据, 把返回的数据赋值给dat ...
- ajax异步请求数据
源码1: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...
- MVC&WebForm对照学习:ajax异步请求
写在前面:由于工作需要,本人刚接触asp.net mvc,虽然webform的项目干过几个.但是也不是很精通.抛开asp.net webform和asp.net mvc的各自优劣和诸多差异先不说.我认 ...
- 原生ajax异步请求基础知识
一.同步交互与异步交互的概念: * 同步交互:客户端向服务器端发送请求,到服务器端进行响应,这个过程中,用户不能做任何其他事情(只能等待响应完才能继续其他请求). * 异步交互:客户端向服务器端发送请 ...
随机推荐
- COMPACT 行记录格式
CREATE TABLE `mytest` ( `t1` varchar() DEFAULT NULL, `t2` varchar() DEFAULT NULL, `t3` ) DEFAULT NUL ...
- 在Eclipse中显示空格(space)和制表符(tab)
显示空格(space)和制表符(tab)设置: Window->Preferences->General->Editors->Text Editors->Show whi ...
- Java基础知识强化之集合框架笔记27:ArrayList集合练习之去除ArrayList集合中的重复字符串元素
1. 去除ArrayList集合中的重复字符串元素(字符串内容相同) 分析: (1)创建集合对象 (2)添加多个字符串元素(包含重复的) (3)创建新的集合 (4)遍历旧集合,获取得到每一个元素 (5 ...
- VNC服务端自动化配置脚本
在使用阿里云的linux云主机,看到官方提供的远程连接服务器bash脚本,记录下来. 功能:自动修改系统源和安装vncserver相关的软件包,centos.redhat系列都是安装gno ...
- python版本简历
- Castle Windsor 使MVC Controller能够使用依赖注入
以在MVC中使用Castle Windsor为例 1.第一步要想使我们的Controller能够使用依赖注入容器,先定义个WindsorControllerFactory类, using System ...
- Java 6 Thread States and Life Cycle.
Ref: Java 6 Thread States and Life Cycle This is an example of UML protocol state machine diagram sh ...
- ORACLE 中ROWNUM用法总结!(转)
对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<.<=.!=),并非说用>,>=,=,be ...
- 由App的启动说起(转)
The two most important days in your life are the day you are born and the day you find out why. -- M ...
- 如何获取App当前版本号
NSDictionary *infoDic = [[NSBundle mainBundle] infoDictionary]; NSString *currentVersion = [infoDic ...