CNode

如何让submit按钮先发送POST请求,再处理onclick事件。

问答
PprofileCaren发布于10 年前最后回复10 年前2 回复5929 浏览0 收藏

我正在使用socket.io编程,众所周知其使用方法很简单,客户端emit一个事件,服务器端on监听这个事件,一旦监听到就执行对应任务,服务器端emit事件也相同。现在我的客户端和服务器端已经成功建立websocket连接。问题是这样的:,我的客户端有一个表单form,通过type为submit的按钮提交,我试图在这个form的onsubmit事件中emit一个事件 (newPost) 给服务器,服务器接收到这个newPost事件以后,对有所有连接中的客户端发送一条通知(io.emit),这条通知的内容是从数据库获取的。问题就处在这条通知的内容,我的目的是:当一个用户post数据以后,向所有用户发送这条数据。但服务器向所有用户发送的数据并不是最新的,而是较旧的一条。**这意味着,**服务器先处理了这个newPost的事件,然后再处理POST请求。问如何才能使得服务器先处理POST请求,再去处理newPost事件(换句话说,如何让submit按钮先发送POST请求,再处理onclick事件)。表达的不清晰可以留言,谢谢!

查看回复

回复 (2)

X
xcatliu#1·10 年前

个人拙见:

我试图在这个form的onsubmit事件中emit一个事件 (newPost) 给服务器,服务器接收到这个newPost事件以后,对有所有连接中的客户端发送一条通知(io.emit),这条通知的内容是从数据库获取的。

可以去掉 onsubmit 事件中的 edit newPost。等服务器收到提交的表单后,处理数据库存储,然后再对有所有连接中的客户端发送一条通知。

不知道这样可不可行。

P
profileCaren#2·10 年前
引用 xcatliu个人拙见: 我试图在这个form的onsubmit事件中emit一个事件 (newPost) 给服务器,服务器接收到这个newPost事件以后,对有所有连接中的客户端发送一条通知(io.emi...

@xcatliu 厉害!应该是可行的,确实是我画蛇添足了,更新数据库后再对所有连接中的用户发送消息才更合理。我是用另一个方法解决的,我在POST请求当中去掉了对POST数据的提取以及存储,直接在emit的时候将数据传到服务器并存储,接着再从数据库获取最新数据。但显然没有你的方式好。

参与回复
登录后即可参与回复。登录