![](/img/trans.png)
[英]Best way to pass data from PHP to JavaScript for my particular case
[英]What is the best and most efficient way to get data by JavaScript from EntityFramework database in my case?
現在,在我的ASP.NET MVC Core2項目中,我在EF database
有一個模型,其中包含幾個屬性:
public class SchoolEvents
{
public long ID { get; set; }
[Required]
[StringLength(40, ErrorMessage = "Max 40 characters")]
public string Title { get; set; }
[Required]
public string Description { get; set; }
[Required]
public DateTime WhenHappens { get; set; }
}
我沒有問題,可以通過MVC Razor Views
從EF database
獲取數據。 但是我在其中一個視圖中使用了JavaScript
Calendar插件,它將標記db
上的事件。 為此,腳本以以下格式獲取數據:
{ title: 'EventTitle', description: 'Few words about the event', datetime: new Date(2018, 8, 14, 16) }
似乎很明顯,我應該在腳本中使用for
循環,對db
對象進行迭代。
由於我對JS
仍然不了解,現在我知道的唯一方法是:
-在控制器中創建JSON文件:
[Route("events")]
[ResponseCache(Location = ResponseCacheLocation.None, NoStore = true)]
public ActionResult Comments()
{
var _events= _context.Events.OrderBy(c => c.ProductID).ToList(); //yes, I know, I should use repository in the best practice
return Json(_events);
}
-在JS
文件中,我可以使用loadEventsFromServer loadEventsFromServer()
函數的loadEventsFromServer()
,該函數使用XMLHttpRequest
或Fetch
進行解析(我尚不知道如何進行解析,我很樂意得到一些建議),
就是這樣。 您還有其他想法怎么做嗎?
編輯 :
使用部分插件代碼進行更新,因為控制台錯誤d is undefined
:
for (var i = 0; i < 42; i++) {
var cDay = $('<div/>');
if (i < dWeekDayOfMonthStart) {
cDay.addClass('c-day-previous-month c-pad-top');
cDay.html(dLastDayOfPreviousMonth++);
} else if (day <= dLastDayOfMonth) {
cDay.addClass('c-day c-pad-top');
if (day == dDay && adMonth == dMonth && adYear == dYear) {
cDay.addClass('c-today');
}
for (var j = 0; j < settings.events.length; j++) {
var d = settings.events[j].datetime;
if (d.getDate() == day && d.getMonth() == dMonth && d.getFullYear() == dYear) {
cDay.addClass('c-event').attr('data-event-day', d.getDate());
cDay.on('mouseover', mouseOverEvent).on('mouseleave', mouseLeaveEvent);
}
}
cDay.html(day++);
} else {
cDay.addClass('c-day-next-month c-pad-top');
cDay.html(dayOfNextMonth++);
}
cBody.append(cDay);
}
我建議您使用ajax請求。
Javascript:Ajax
$.ajax({
type: 'POST',
url: '@URL.Action("Comments","Controller")',
contentType: 'application/json;charset=utf-8',
dataType: 'json',
data: {},
success: function (data) {
var events = new Object();
events = $.map(data.d, function (item, i) {
for (var j = 0; j < data.d.length; j++) {
var event = new Object();
var startDate = Date.parse(item.WhenHappens )
event.start = startDate;
event.title = item.Title;
event.backgroundColor = "#c6458c";
event.description = item.Description;
return event;
}
})
callCalender(events);
},
error:function(e){
}
});
調節器
[Route("events")]
[HttpPost]
[ResponseCache(Location = ResponseCacheLocation.None, NoStore = true)]
public ActionResult Comments()
{
var _events= _context.Events.OrderBy(c => c.ProductID).ToList(); //yes, I know, I should use repository in the best practice
return Json(_events);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.