Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.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
Javascript 每隔5秒从数据库获取数据,并通过AJAX将其发送到视图_Javascript_Jquery_Ajax_Asp.net Mvc 4_Asp.net Ajax - Fatal编程技术网

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

Javascript 每隔5秒从数据库获取数据,并通过AJAX将其发送到视图,javascript,jquery,ajax,asp.net-mvc-4,asp.net-ajax,Javascript,Jquery,Ajax,Asp.net Mvc 4,Asp.net Ajax,我需要一些帮助。我想每隔5秒用db(mssql)的数据更新谷歌地图标记 我有一个JsonResult开关返回选项卡列表: [System.Web.Mvc.HttpGet] JsonResult LoadDB() { EagleDBEntities db = new EagleDBEntities(); return Json(db.Coordinates.ToList(), JsonRequestBehavior.AllowGet);

我需要一些帮助。我想每隔5秒用db(mssql)的数据更新谷歌地图标记

我有一个JsonResult开关返回选项卡列表:

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

        return Json(db.Coordinates.ToList(), JsonRequestBehavior.AllowGet);
    }
以及视图中的Ajax代码

        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');
                }
            });
在和我得到错误警报中,我没有从数据库接收数据:(


您只需设置如下javascript计时器:

setInterval(函数(){
getData();
}, 3000);

我把它修好了

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);




    };

好的,thx,但是我在ajax代码中有一个错误,我没有从数据库接收数据。你能提供更多细节吗?这是一个c#webservice?你能粘贴ajax错误吗?或者只是一个空结果响应吗?如果你将“”粘贴到navigator将得到相同的响应(404)。您必须从正在运行的IIS express中获取正确的url。您当前的问题是路由不匹配。我们需要查看路由配置以诊断原因。不过,您应该将url更改为
/Home/LoadDB
(注意前面的斜杠),因为此代码当前仅在域根目录上工作。也就是说,您也有JavaScript错误。在成功方法中,您引用了未定义的
数据
(可能您指的是
结果
?)即使这样,这里的响应也不会有
items
成员,因此也会失败。添加匿名方法可能没有必要。如果是这样,我相信您会收到“未授权”异常。
        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);




    };