正如标题所述,我无法从JavaScript中的数据库中获取和使用数据。我有一个控制器,其中有我的数据库上下文构造函数和一个JsonResult动作,其中的信息应以其应有的方式提供,但是当我尝试在javascript中使用数据时,我认为它为null。 这是我的控制器:
namespace ProiectColectiv.Controllers
{
public class AdminMapController : Controller
{
private readonly ProiectColectivContext _context;
public AdminMapController(ProiectColectivContext context)
{
_context = context;
}
public ActionResult AdminMap(User user)
{
return View("~/Views/Home/AdminMap.cshtml", user);
}
public JsonResult GetAllLocation()
{
var data = _context.Parkings.ToList();
return Json(data);
}
}
}
这是我的.cshtml和javascript:
@*@model ProiectColectiv.Models.Parking*@
@{
ViewData["Title"] = "Admin Map";
}
<br/>
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0">
<meta charset="utf-8">
<style>
/* Always set the map height explicitly to define the size of the div
* element that contains the map. */
#map {
height: 800px;
width: 1200px;
}
</style>
</head>
<body>
<div id="map"></div>
<script>
var map;
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: { lat: 46.770920, lng: 23.589920},
zoom: 13
});
$.get("@Url.Action("GetAllLocation","AdminMap")", function (data, status) {
var marker = [];
var contentString = [];
var infowindow = [];
for (var i = 0; i < data.length; i++) {
marker[i] = new google.maps.Marker({ position: { lat: parseFloat(data[i].Latitudine), lng: parseFloat(data[i].Longitudine) }, map: map });
contentString[i] = '<div id="content">' +
'<div id="siteNotice">' +
'</div>' +
'<h1 id="firstHeading" class="firstHeading">'+ data[i].Name+'</h1>' +
'<div id="bodyContent">' +
'<p><b>' + data[i].Name +'</b>, also referred to as <b>Ayers Rock</b>, is a large ' +
'sandstone rock formation in the southern part of the ' +
'Northern Territory, central Australia. It lies 335 km (208 mi) ' +
'south west of the nearest large town, Alice Springs; 450 km ' +
'(280 mi) by road. Kata Tjuta and Uluru are the two major ' +
'features of the Uluru - Kata Tjuta National Park. Uluru is ';
infowindow[i] = new google.maps.InfoWindow({
content: contentString[i]
});
//marker[i].addListener('click', function() {
// infowindow[i].open(map, marker[i]);
//});
}
})
}
</script>
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyD9HfqjqR0VDGD5N1sCd_nU8qC7J5SXATM&callback=initMap"
async defer></script>
</body>
</html>
这是我的模特:
namespace ProiectColectiv.Models
{
public class Parking
{
public int Id { get; set; }
public string Name { get; set; }
public double Longitudine { get; set; }
public double Latitudine { get; set; }
public int NrFastChargingSpots { get; set; }
public int NrNormalChargingSpots { get; set; }
public List<Station> Stations { get; set; }
}
}
有人知道为什么数据没有传递给javascript吗? 任何帮助将不胜感激。
答案 0 :(得分:1)
我认为您需要在JsonRequestBehavior.AllowGet
方法中添加Json()
作为第二个参数。
return Json(data, JsonRequestBehavior.AllowGet)
答案 1 :(得分:0)
已解决。
问题是return Json(data)
返回一个字符串,类似{name: "x"}
,而我试图将其取为data.Name
,而我应该像data.name
那样做,因为它来了来自json。