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

标签 javascript c# html

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

相关文章:

javascript - 如何告诉网络浏览器用户已经修改了页面?

javascript - 使用 Jquery 拖放

c# - 以编程方式将 WXS 构建到 MSI 中

c# - 从 C# 代码启动 Storyboard

css - Div 中的背景图像在左侧而不是右侧正确显示

html - 带有悬停状态背景更改的样式链接

html - CSS - div 上的全对 Angular 线透明切 Angular

encryption - 如果没有原始大小,SlowAES 无法正确解密

javascript - 未捕获的语法错误 : missing ) after argument list using AngularJS

c# - 如何在 javascript 中找到父窗口的标题?