ajax提交表单进行登陆及其相关问题

luisborge 2017-07-06 11:56:44
大概说一下我的问题:
首页是用框架分成了三块,top,left,main.在top.jsp里面有一个登录连接,连接到一个
action里面,标签里面添加了target属性为main,然后action直接将它转发到登录页面,这个时候登录页面会在main里面打开,接着输入用户名密码,点击登录就去访问一个登录的action,如果查不到该用户,我又将结果转发到登录页面,可是这时候,登录页面不是在main中打开的,而是占了整个页面.这是问题一.
于是我想用ajax的方式去登陆,前台也能正常得到我在后台写入的信息,可是紧接着页面又刷新了一次,把我当页面信息刷没了,浏览器控制台可以看到,它在访问了我当登录功能之后,又去发了一个访问我那个转发到登录页面的那个action.希望大神指点!



...全文
783 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_35942223 2017-07-08
  • 打赏
  • 举报
回复
你的user对象是放进session么,如果不是,我觉的你退出转发的时候把user也传过去了,所以首页还是显示你是登录状态,而重定向是不带数据传输的,所以user为空,正常退出的了,不知道是不是这种情况
什么都不能 2017-07-08
  • 打赏
  • 举报
回复
你登录不是用ajax做吗?怎么会跳转,退出转发后还是看到登录状态可能是缓存,要设置禁用缓存。
luisborge 2017-07-08
  • 打赏
  • 举报
回复
引用 5 楼 qq_35942223的回复:
第二个:你把location="/index.htm"改location="/index.html"看看
另外就是登录功能的action,我之前写的登录成功的话,直接把页面转发走,这样不行,如果输入正确用户名密码会报404错误,还是得用respons写一个信息回去,然后rerurn NONE 这样便一切正常
luisborge 2017-07-08
  • 打赏
  • 举报
回复
引用 5 楼 qq_35942223的回复:
第二个:你把location="/index.htm"改location="/index.html"看看
完美解决了 我的哥 就是submit事件本身需要一个返回值,我不写的话估计是默认为true,所以浏览器解析的时候会认为这个表单需要提交,但是我的js代码相当于已经人为的提交了一次,这样就会提交两次。我写了一个return false以后 就不会有访问两次的问题了。还有就是location.href 没按你说的写的话 页面会嵌套 按你说的加了一个parent在前面,登录成功后,页面也不会嵌套了。另外一个不太明白的现象是我退出登录的action如果是以转发的方式访问首页的话,首页还是显示我是登录状态,但如果改成重定向,就是正常的了。不太明白怎么回事。
什么都不能 2017-07-08
  • 打赏
  • 举报
回复
引用 14 楼 luisborge 的回复:
[quote=引用 11 楼 hanpoyangtitan的回复:]你登录不是用ajax做吗?怎么会跳转,退出转发后还是看到登录状态可能是缓存,要设置禁用缓存。
跳转的原因我回复出来了 禁用缓存什么的 很久没用了 用response设置禁用缓存 只是针对这个action起作用吗[/quote] 按你的设计是不应该有跳转的吧,起码你的ajax登录请求完毕还没写跳转。response禁用缓存看你写到哪里了?如果写到filter或者分发模式的分发器里都可以。
qq_35942223 2017-07-08
  • 打赏
  • 举报
回复
看看你退出的代码
luisborge 2017-07-08
  • 打赏
  • 举报
回复
引用 11 楼 hanpoyangtitan的回复:
你登录不是用ajax做吗?怎么会跳转,退出转发后还是看到登录状态可能是缓存,要设置禁用缓存。
跳转的原因我回复出来了 禁用缓存什么的 很久没用了 用response设置禁用缓存 只是针对这个action起作用吗
luisborge 2017-07-08
  • 打赏
  • 举报
回复
引用 12 楼 qq_35942223的回复:
你的user对象是放进session么,如果不是,我觉的你退出转发的时候把user也传过去了,所以首页还是显示你是登录状态,而重定向是不带数据传输的,所以user为空,正常退出的了,不知道是不是这种情况
是放进session的 转发会仍旧显示登录 但是刷新一下就不再是登录 难道真的跟缓存有关
luisborge 2017-07-07
  • 打赏
  • 举报
回复
我的登录表单上只写了一个id属性. 连action属性都没写 这样也会被提交吗难道
什么都不能 2017-07-07
  • 打赏
  • 举报
回复
跟你的登录表单写的有关系吧,是不是登录表单也提交了?
什么都不能 2017-07-07
  • 打赏
  • 举报
回复
引用 2 楼 luisborge 的回复:
我的登录表单上只写了一个id属性. 连action属性都没写 这样也会被提交吗难道
action不谢就是你的表单所在的地址,这个是常识,method不写默认就是get
qq_35942223 2017-07-07
  • 打赏
  • 举报
回复
你把onsumbit删掉试试,换成按钮的点击事件,因为onsumbit是提交之前执行的,执行之后再去提交
qq_35942223 2017-07-07
  • 打赏
  • 举报
回复
第二个:你把location="/index.htm"改location="/index.html"看看
qq_35942223 2017-07-07
  • 打赏
  • 举报
回复
问题一,你的这个问题(action直接将它转发到登录页面,这个时候登录页面会在main里面打开。。)因为标签target属性为main,当然在你main打开,而你按钮点击登录却不是,你可以用ajax返回一个登录成功失败的状态,然后用window.parent.frames[ 'main'].location='路径'这种进行跳转
qq_35942223 2017-07-07
  • 打赏
  • 举报
回复
然后呢,你想怎样呢?
luisborge 2017-07-07
  • 打赏
  • 举报
回复
引用 4 楼 qq_35942223的回复:
问题一,你的这个问题(action直接将它转发到登录页面,这个时候登录页面会在main里面打开。。)因为标签target属性为main,当然在你main打开,而你按钮点击登录却不是,你可以用ajax返回一个登录成功失败的状态,然后用window.parent.frames[ 'main'].location='路径'这种进行跳转
不用ajax的方式 我在form上加了一个target为main 这样登录失败 转发到login.jsp后是套在页面里正常显示的 可是呢 如果登录成功 我我转发到index.html 那么就在main里面嵌套了一个index的错误效果。 ajax一直没弄清楚为什么会先后访问两个action。醉了

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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