As the title says, i am not able to get and use data from Database in my javascript. I have a Controller in which i have my Database Context Constructor and a JsonResult Action, in which the information comes as it should, but when i'm trying to use data in the javascript it comes as null i believe. Here is my Controller:
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);
}
}
}
Here is my .cshtml with the 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>
And here is my Model:
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; }
}
}
Any idea why the data is not passed to javascript? Any help will greatly appreciated.
我认为您需要在Json()
方法中添加JsonRequestBehavior.AllowGet
作为第二个参数。
return Json(data, JsonRequestBehavior.AllowGet)
Resolved. The problem was that return Json(data)
was returning a string, something like {name: "x"}
and i was trying to take it as data.Name
and i should have done it like data.name
, as it comes from json.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.