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异步请求基础知识
一.同步交互与异步交互的概念: * 同步交互:客户端向服务器端发送请求,到服务器端进行响应,这个过程中,用户不能做任何其他事情(只能等待响应完才能继续其他请求). * 异步交互:客户端向服务器端发送请 ...
随机推荐
- 覆盖equals的时候总要覆盖hashCode
import java.util.HashMap; public class Student { private String name ; private String id; public Stu ...
- Android开发:最详细的 NavigationDrawer 开发实践总结
最详细的 NavigationDrawer 开发实践总结 继前面写的两篇文章之后(有问题欢迎反馈哦): Android开发:Translucent System Bar 的最佳实践 Android开发 ...
- 关于jsp web项目中的javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/el/ELResolver错误
错误: javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/el/ELResolver org.apache.j ...
- css考核点整理(八)-在什么情况下通过img引入图片,什么情况用背景图引入?背景属性有哪些
在什么情况下通过img引入图片,什么情况用背景图引入?背景属性有哪些
- linux下杀死进程(kill)的N种方法 【转】
转自 http://blog.csdn.net/andy572633/article/details/7211546 首先,用ps查看进程,方法如下: $ ps -ef ……smx 182 ...
- POS tagging的解釋
轉錄文章~~ 什么是词性标注(POS tagging) Tue, 04/13/2010 - 10:36 — Fuller 词性标注也叫词类标注,POS tagging是part-of-speech t ...
- mysql复习笔记
阅读目录 1.什么是SQL语句2.使用sql语句创建数据库和表3.创建数据表4.数据完整性约束5.四中基本字符类型说明6.SQL基本语句7.类型转换函数8.日期函数9.数学函数10.字符串函数11.联 ...
- native跟volatile
native是告知编译器 该方法是其他语言实现的 比如C 呵呵 private native void CoutSea();没有方法实现部分的 volatile是Java语言的关键字,用在变量的声明中 ...
- 巧用hidden传递参数
- Android开发手记(32) 使用摄像头拍照
在Android中,使用摄像头拍照一般有两种方法, 一种是调用系统自带的Camera,另一种是自己写一个摄像的界面. 我们要添加如下权限: <uses-permission android:na ...