繁体   English   中英

每隔5秒从数据库获取数据并通过AJAX将其发送到视图

[英]Get Data from DB every 5 sec and send it through AJAX to Views

我需要协助。 我想使用db(mssql)中的数据每5秒更新一次Google Maps标记。

我有JsonResult女巫返回表格列表:

    [System.Web.Mvc.HttpGet]
    JsonResult LoadDB()
    {
        EagleDBEntities db = new EagleDBEntities();

        return Json(db.Coordinates.ToList(), JsonRequestBehavior.AllowGet);
    }

我的Ajax代码在Views中

        function getData() {

            $.ajax({
                type: "GET",
                url: "Home/LoadDB",
                contentType: "application/json;charset=utf-8",
                dataType: "json",
                success: function (result) {

                    $.each(data.items, function(item) {
                        alert('long:'+item.longitude +' lat:'+item.latitude);
                    });
                },
                error: function (response) {

                    alert('error');
                }
            });

在和我得到错误警报,我没有从数据库接收数据:(

Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:7279/Home/LoadDB

我修好了它。

HomeController.cs:

    [HttpGet]
   public JsonResult LoadDB()
    {
        EagleDBEntities db = new EagleDBEntities();
        var cor = db.Lokalizacja          
           .Select(a => new
           {
               szerokosc = a.szerokosc,
               dlugosc = a.dlugosc
           });

        return Json(cor, JsonRequestBehavior.AllowGet);
    }

Maps.cshtml:

        function getData() {

        var counter = 0;
        interval = window.setInterval(function () {
            counter++;

            $.ajax({
                type: "GET",
                url: "LoadDB",
                contentType: "application/json;charset=utf-8",
                dataType: "json",
                success: function (data) {
                    $.each(data, function (i, item) {

                        moveMarker(item.szerokosc, item.dlugosc);

                    });
                },
                error: function (response) {

                    alert('eror');
                }
            });



            marker.setPosition(pos);
            if (counter >= 1000) {
                window.clearInterval(interval);
            }
        }, 10);




    };

你只需要像这样设置一个javascript计时器:

setInterval(function(){ getData(); }, 3000);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM