论坛首页 AJAX版 AJAX

弹出窗口模式下,父窗口使用AJAX局部刷新得不到最新数据的问题

浏览 301 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
时间:2008-04-16
遇到这样一个问题:
父页面弹出子窗口,子窗口的Action要执行数据插入操作,在子窗口submit后按惯例刷新父页面。子窗口的部分JS如下:
   
  form.submit();
  window.close();
  window.dialogArguments.loadFree();

loadFree() 方法为父页面局部刷新的方法,该方法发送xmlHttpRequest请求,并解析返回的XML然后显示为HTML。xmlHttpRequest采用类似线程池的方法解决并发问题,并在URL上加了随机数解决缓存的问题。
现在的问题是:
子窗口的XXAction执行Insert或者Update操作的过程中,loadFree()方法的URL对应的YYAction已经开始做查询操作,
并有可能在XXAction的Insert或者Update操作Commit之前完成,这样YYAction返回的XML不是最新数据,
前台父页面展示的数据也不是最新数据。
曾想采用定时器延迟执行loadFree(),但感觉不是很好。
请问这里有什么更好的解决办法?
   
时间:2008-04-16
大家有什么好的建议吗?是问题太简单了?
   
0 请登录后投票
时间:2008-04-16
将弹出窗口改为层,呵呵,不知道这样会不会改动很多的东西~~
   
0 请登录后投票
时间:2008-04-17
可是用层也无法保证YYAction的select在XXAction的Insert提交之后才去查询。
   
0 请登录后投票
时间:2008-04-17
把form.submit()改成用ajax提交,在提交成功的回调函数里面执行
window.dialogArguments.loadFree();
window.close();
   
0 请登录后投票
时间:2008-04-17
1.子窗口为loadFree()方法设置定时器?
2.子窗口不提交表单,而是由父窗口代为提交?
   
0 请登录后投票
时间:2008-04-17
Quake Wang 写道
把form.submit()改成用ajax提交,在提交成功的回调函数里面执行
window.dialogArguments.loadFree();
window.close();

很感谢你的建议,确实不错。
   
0 请登录后投票
论坛首页 AJAX版 AJAX

跳转论坛:
JavaEye推荐
    快速回复 引用上一条消息 (Alt+S)