同一个页面,发出ajax请求,经过controller,返回ModelAndView,数据显示不了

zuilafeng 2015-12-21 12:24:35
1.jsp页面
一个parent.jsp中包含了一个下拉菜单(显示在上面),下面是一个iframe,iframe的src为child.jsp.
2.需求
根据上面的下拉菜单所选择的项目,发出请求数据,在iframe中表格中显示所对应项目中的数据
3.动作
目前,我在下拉菜单中注册了onchange事件,当用户选择了一个子项,则发出ajax请求,然后,在相应的controller中,进行处理,ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("dataList",new ArrayList());//反正是一个list集合,里面是有数据的,modelAndView.setViewName("child"),
4.child.jsp
有一个table,表格中用el表达式${dataList},<c:foreach>循环取出相应的数据
5.现象
通过观察http请求和应答,发现,response返回了child.jsp中table的相应数据,但是在整个parent.jsp页面显示中,显示不到获取的数据。这是为什么 ?
6.可能原因
(1)是child.jsp中有数据了,但是parent.jsp中iframe框架中的页面没有进行同步显示
(2)是modelAndView中setViewName错误了
(3)请求和响应不能是同一个页面?
请大神能帮忙!
...全文
11556 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zuilafeng 2015-12-21
  • 打赏
  • 举报
回复
引用 6 楼 shijing266 的回复:
[quote=引用 5 楼 zuilafeng 的回复:] [quote=引用 3 楼 shijing266 的回复:] ajax请求完,你的页面数据都在ajax的success函数里面,你如果需要展示,需要通过js去操作展示
确实,当初我也是这么想的,想让iframe中的html内容,都用success返回的data中的内容去替换的,结果好像没什么效果[/quote] 你既然用了iframe ,为什么不直接用iframe去做一个新页面,然后每次请求都当做一个控制器处理[/quote] 后来我就是这么做的,这个问题解决了,如果能早有人告诉我,也不会挣扎这么久了,但解决的过程还是收获很多
zuilafeng 2015-12-21
  • 打赏
  • 举报
回复
引用 4 楼 Mr_yyy 的回复:
我们用AJAX用的最多的就是局部刷新,局部刷新势必要操作DOM元素呀。如果楼主找到好一点的方法可以贴出来,我也好好学习一下哈
后来我没有用ajax,而是我想到了以前用超链接的target属性可以指定显示的方式,后来我想能不能在select 的option中加超链接的,然后把超链接的target设置为iframe的name, 于是,各种找,最后发现,可以修改iframe的src属性,不把它写成.jsp文件的格式,而是写成.do请求,这样用controller处理,然后加载返回的数据,最后呈现页面
  • 打赏
  • 举报
回复
引用 5 楼 zuilafeng 的回复:
[quote=引用 3 楼 shijing266 的回复:] ajax请求完,你的页面数据都在ajax的success函数里面,你如果需要展示,需要通过js去操作展示
确实,当初我也是这么想的,想让iframe中的html内容,都用success返回的data中的内容去替换的,结果好像没什么效果[/quote] 你既然用了iframe ,为什么不直接用iframe去做一个新页面,然后每次请求都当做一个控制器处理
zuilafeng 2015-12-21
  • 打赏
  • 举报
回复
引用 3 楼 shijing266 的回复:
ajax请求完,你的页面数据都在ajax的success函数里面,你如果需要展示,需要通过js去操作展示
确实,当初我也是这么想的,想让iframe中的html内容,都用success返回的data中的内容去替换的,结果好像没什么效果
Mr_yyy 2015-12-21
  • 打赏
  • 举报
回复
我们用AJAX用的最多的就是局部刷新,局部刷新势必要操作DOM元素呀。如果楼主找到好一点的方法可以贴出来,我也好好学习一下哈
  • 打赏
  • 举报
回复
ajax请求完,你的页面数据都在ajax的success函数里面,你如果需要展示,需要通过js去操作展示
zuilafeng 2015-12-21
  • 打赏
  • 举报
回复
引用 1 楼 Mr_yyy 的回复:
在页面全部加载完成后,调用ajax请求,此时页面不会进行刷新,所以所有ajax返回的数据都需要你用js去完成操作,比如你在child.jsp中使用${dataList},这种方式是在页面加载时获得datalist,而用ajax页面没有刷新datalist也不会被显示,你可以用js在child.jsp中动态添加一个div去放置这些值(每次操作先删除上一个div,再添加div,或者直接覆盖div的内容也可以)
这个招是有点麻烦吧,效率也不高吧,我这个要查询显示记录的,频繁操作DOM元素,不太好吧,你说的问题的原因应该是对的
Mr_yyy 2015-12-21
  • 打赏
  • 举报
回复
在页面全部加载完成后,调用ajax请求,此时页面不会进行刷新,所以所有ajax返回的数据都需要你用js去完成操作,比如你在child.jsp中使用${dataList},这种方式是在页面加载时获得datalist,而用ajax页面没有刷新datalist也不会被显示,你可以用js在child.jsp中动态添加一个div去放置这些值(每次操作先删除上一个div,再添加div,或者直接覆盖div的内容也可以)

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧