前端该怎么获取数据?

是这样的,我需要在我的页面上增加一个战队系统,大概涉及的内容有加入战队,查询战队,用户查询等等.

关于加入战队功能的实现思路:
当加入战队时,给服务器发送一个加入战队的请求,然后

  1. 服务器能及时的返回相应,告诉我请求已经成功(这种功能是不是用到websocket)

  2. 服务器会等到我再次刷新页面的时候,才在页面上显示是否加入战队成功

我觉得第一种方法更适合web应用,但是我想写的网页并不算是web应用,因为我觉得用户发送加入战队的请求后,可能就关闭我的网页去做别的事了,所以这种及时返回消息的功能可能不适合我的页面

所以我选择第二种思路来写网页
现在的问题是,当用户加载网页的时候,我的战队系统该怎么获取相关信息呢(比如,战队系统得知道我是否加入了战队,我的用户id)?

目前想到的思路有两个:
1 当页面加载后,用js去解析html页面的结构,从中分析出需要用到的数据,例如

<div>
    <span data-user_id="001">测试用户</span>
    已经加入的战队<span data-my_team_id="998">测试战队</span>
</div>

这样通过js一解析,我就知道当前用户的状态

2 当页面加载完成后,用ajax发起请求,获取用户的相关数据

我总觉得第二种方法不是很好,但是也觉得第一种方法怪怪的,所以想知道合适的做法是什么.

这个是战队系统的截图
图片描述

回复
阅读 12.6k
7 个回答

1)通过Ajax请求发送加入请求,在当前页面提示用户加入请求正在处理,等Ajax请求完成后告知用户结果
2)如果发送请求后用户关闭的页面,那么等第2次用户打开页面时,发送查询是否已经加入战队,如果已经加入(通过1发送的),那么提示用户已经加入,页面跳转到相应地页面,如果没有加入(可能压根就没有发送过加入请求,如同1之前的状态),那么页面显示提示用户加入的页面

1.
①:如果是随机用户(游客)也可以加入的话,加入战队的时候 可以通过发送ip 到后端 后端对你这个ip做标记 说你加入了战队,在短时间内 你刷新页面都是通过发送ip去获取你的相关信息,但是ip 也是会变的,不会永久性能在一个地方登陆曾经注册的,
②:如果你是要固定的用户ID 给下次可以用的话 就需要先注册 然后再加入战队 这样主要你 触发加入战队,就算是关闭了电脑 下次登陆后 就能获取到你在哪个战队的信息,你需要给后端发送你的用户id

2.如果只是单纯加入战队并且显示加入成功与否的话 这种功能不需要用到websocket,这里ajax 就能实现,而且一般都是聊天系统才用得到websoket(web端和服务器端需要实时交互信息) ,

建议你先读读 HTTP权威指南
你需要补充很多知识

这个问题在你给服务器发送加入战队请求的时候post用户id给服务器!然后服务器处理这个id和加入战队请求后给数据库写入战队数据!你下次打开的时候再获取战队数据就可以了!

黯葉篂讖(这名字是念暗夜星谶吗www)说的对。

你的需求接近“私信系统”:不要求即时性,刷新页面就能获得“消息”(就是加入战队的情况“)。

我的解决思路是这样的:每次加载页面,向服务器ajax“加入战队”的处理结果。

  1. 如果有,输出。然后用户确认之后,告诉服务器“已阅”,服务器就把这个处理结果从数据库中删掉。

  2. 没有处理结果?那就没啥事了…

ps.利用javascript里的setInterval函数,可以自定义向服务器ajax的间隔…比如说每秒钟都看看有没有新的处理结果。其实第二种方法并没有那么“不好”…

题外话:

读了你的思路,我发现了一个问题:用户信息和战队信息居然不是一起拿到的…这对我来说稍微有点不可思议…如果我写后端代码的话一定会把这两个东西绑一起,一次性用sql查出来,发送给客户端…

不就是个增删改查吗?别自己把自己搞复杂了。还websocket,我囧。。先把http搞懂了。。

像这样的数据处理要用到数据库 建两个表 一个用户表,一个战队表(带字段“战队成员”),用户要加入到哪个战队,就把这个用户加入战队成员里面,之后要查他有没有加入这个战队 通过用户名去战队表查询战队成员有没有这个用户名就行了 注意:用户名是不能同名的 搭建项目的话要用到ssm框架 前端用到ajax、json 这样就算浏览器坏了 在其他浏览器也可以操作

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏