Javascript 每隔5秒从数据库获取数据,并通过AJAX将其发送到视图
我需要一些帮助。我想每隔5秒用db(mssql)的数据更新谷歌地图标记 我有一个JsonResult开关返回选项卡列表: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);
[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);
};