如何让submit按钮先发送POST请求,再处理onclick事件。
发布于 8 年前 作者 profileCaren 5480 次浏览 来自 问答

我正在使用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 回复

个人拙见:

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

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

不知道这样可不可行。

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

回到顶部