Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何自动更新局部视图?_Jquery_Asp.net Mvc - Fatal编程技术网

Jquery 如何自动更新局部视图?

Jquery 如何自动更新局部视图?,jquery,asp.net-mvc,Jquery,Asp.net Mvc,我正在尝试转换我的一个MVC页面,以便它每10秒自动更新一次数据。下面是调用“main”视图的方法 这里有一些观点 @Html.Partial("SomeView",Model) 而局部视图会消耗模型 @model DatabaseConnectionMonitor.Models.TestDbModel @foreach(var row in @Model.Rows)...... 现在,我如何将这些连接起来,以便局部视图自动刷新?有很多(似乎已经过时的)方法可以接受这一点,我想遵循当前的最佳

我正在尝试转换我的一个MVC页面,以便它每10秒自动更新一次数据。下面是调用“main”视图的方法

这里有一些观点

@Html.Partial("SomeView",Model)
而局部视图会消耗模型

@model DatabaseConnectionMonitor.Models.TestDbModel
@foreach(var row in @Model.Rows)......

现在,我如何将这些连接起来,以便局部视图自动刷新?有很多(似乎已经过时的)方法可以接受这一点,我想遵循当前的最佳实践。我的研究告诉我应该使用jquery低调的ajax来实现这一点

我个人使用jQuery AJAX调用来满足这种类型的需求。它允许您从服务器查询新数据,而无需刷新页面

这篇帖子上被接受的答案是一个很好的开始:

重新发布代码以便于查看:

$("button").click(function refreshText(){
    $.ajax({
        url:"http://127.0.0.1:8080/",
        success:function(result){
            $("#text").val(result);
            setTimeout(refreshText, 5000);
        }
    });
});

另一个选项是signar,它可以向客户端推送更新,但它更复杂一些:

您的问题是模糊/宽泛的,因此您可能会得到模糊/宽泛的答案

如果您想要代码示例,那么我建议您提供您尝试过的代码,以便我们能够修复它。堆栈溢出通常不是一个好去处“我如何做这个复杂的事情?向我展示代码。”有许多可能的解决方案

我将向您展示三种(可能有很多)可能的技术

  • 难度:我认为对于一个新手来说这是多么困难
  • 耐久性:(可能是个坏名字)维护/扩展/修改是多么容易。它的可重用性以及它的粗略估计
1.使用信号机 难度:高,耐久性:高 是一个.NET库,非常适合集成到ASP.NET MVC应用程序中。它允许您将信息从服务器端代码实时发送到一个或多个客户端。这意味着页面的某个部分不会基于时间而刷新,而是基于某个任意事件

这种技术在现代复杂的web应用程序(如Facebook)中非常流行。在此类示例中,当新数据传入时,页面通常会进行小的刷新或更新

2.使用Javascript和jQuery 难度:低,耐久性:低 Javascript已经有了一个函数。只要给这个函数一个回调和一个超时时间(以毫秒为单位)作为参数,它就会每隔X毫秒调用一次函数

您可以将其与一起使用,以便jQuery每X秒异步调用一个MVC部分视图,并用指定的部分视图替换页面的一部分。例如:

setInterval(function() {
    $.ajax({
        url: "@Url.Action("Action", Controller)"
    }).success(function(data) {
        $("#someElement").html(data);
    });
}, 10000);
3.使用web应用程序Javascript框架 难度:中等,耐久性:高 例如(我的选择),等等都是比jQuery更好的实现这一目标的方法。基本思想类似于jQuery,但解决方案更健壮


您需要创建逻辑(通常在视图模型或控制器中),负责将某些任意数据(如部分视图中的HTML)与用户页面上的数据同步。这可以很容易地用定时器来完成,定时器通常包含在框架中。

您可以对定时器进行AJAX调用,或者使用类似signar的东西在某些内容发生更改时通知视图。我想从数据源中提取信息,并在局部视图中显示它。想一想一个股票监视器,它会随着时间的推移而自动更新,我上面给出的选项是你最好的选择。我个人经常使用jQuery AJAX调用来满足这类需求。有没有可能提供AJAX定时器的示例?+1 rowan-您以非常优雅和简单的方式回答了一系列选项。对于一个模糊的问题,这是一个很好的答案。从我在web上看到的示例来看,除了SignalR之外,他们还使用了这些MVVM框架的组合,因此,例如,如果没有SignalR使用方法3,db上的值变化将如何反映用户a、b、c正在查看的内容?
setInterval(function() {
    $.ajax({
        url: "@Url.Action("Action", Controller)"
    }).success(function(data) {
        $("#someElement").html(data);
    });
}, 10000);