我正在使用 HTML5 视频元素。
我正在使用 JavaScript 处理视频元素并检查他们是否观看了整个视频。
但我的问题是,一旦视频“onended”结束,我需要触发一个 c# 函数来更新他们观看了该视频的我的数据库。
我花了很多时间试图弄清楚如何从我正在进行测试的 JavaScript 调用 c# 函数并放弃了。
是否可以从服务器端监听客户端事件?这样我就可以监听“onended”,一旦事件被触发,我就可以用它来更新数据库。或者有没有办法为视频元素创建服务器端事件?
最佳答案
Is it possible to listen for Client Side events from the server side?
是的。通过使用客户端 (JavaScript) 事件来调用您的服务器端事件。
以 jQuery 和 ASP.NET Web API 为例,如下所示:
// Server-Side
public void VideoWatcherController : ApiController
{
[HttpPost]
public void RegisterWatchedVideo([FromBody]string id)
{
// do server side actions here.
}
}
// Client Side
$('#yourVideoElement').on('ended', function() {
$.post('http://yourwebsitename.com/api/VideoWatcher', userId);
});
虽然很少有警告。当心CORS从不同的域访问您的 Web API。并注意 IE 对视频标签的限制。
附加说明 为什么要使用 http://yourwebsitename.com/api/VideoWatcher
:
ASP.NET Web API 的默认路由是 api/{controller}/{id}
(其中 id 是可选的)。请注意,那里没有 {action}
。
问题:路由现在如何使用 Controller 中的哪个 Action /方法?
答案在使用的 HTTP 动词中。
因此,由于我们在这里使用 POST,因此路由会查找具有 [HttpPost]
属性的操作/方法。
更多信息 here .
关于javascript - 如何在服务器端监听客户端事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28818584/