Skip to main content
 首页 » 编程设计

javascript之如何在服务器端监听客户端事件

2024年08月06日43lovecherry

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