timeline.js + MVC + Ajax + JSON
你好,
我在将字符串转换为 Json 对象时遇到问题
我必须在我的网页上显示时间线,我已经使用 Timeline.js 来实现相同的目的,我可以使用如下所示的静态数据运行时间线
静态数据
// Create a JSON data table
data = [
{
'start': new Date(2010, 7, 23),
'content': 'Conversation'
},
{
'start': new Date(2010, 7, 23),
'content': 'New Conversation'
},
{
'start': new Date(2010, 7, 23),
'content': 'Very New Conversation'
}
现在当我这样做
alert(data);
它给了我
[object Object],[object Object],[object Object]
但现在我必须显示来自数据库的数据,因此我在 Controller 上调用以下函数
Controller 上的GetTimeLine方法
public JsonResult GetTimeline()
{
JsonResult jr = new JsonResult();
var objtimeline = objEntities.Timelines.Where(tl => tl.StudentID == Sessions.StudentID).ToList().AsQueryable();
String newstr = "[";
foreach(var tml in objtimeline)
{
DateTime date1 = Convert.ToDateTime(tml.CalculatedDate);
newstr += "{'start': new Date("+date1.Year+","+date1.Month+","+date1.Day+","+date1.Hour+","+date1.Minute+","+date1.Second+"),'content':'"+tml.Description+"'},";
}
newstr = newstr.TrimEnd(',');
newstr += "];";
jr.Data = newstr;
jr.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
return jr;
}
调用 Controller 方法的函数
jQuery.ajax({
type: "POST",
url: "@Url.Content("~/Student/GetTimeline")",
success: function (result) {
data = result;
},
});
alert(data);
它给了我以下警报
[{'start': new Date(2012,2,11,0,0,0),'content':'Parents meeting'},{'start': new Date(2012,2,15,0,0,0),'content':'Exam Meeting'}];
所以问题在于将字符串转换为 Json 对象,
如何将从 Controller 返回的字符串转换为 View 上的 Json 对象...
最佳答案
你太辛苦了。让框架为您做这件事。
public JsonResult GetTimeline()
{
var timeline = objEntities.TimeLines.Where( tl => tl.StudentID == Sessions.StudentID )
.ToList() //required due to Convert call
.Select( tl => new
{
start = Convert.ToDateTime(tl.CalculatedDate),
content = tl.Description
});
return Json( timeline, JsonRequestBehavior.AllowGet );
}
然后使用 getJSON
(因为您明确允许获取)或在请求中指定 dataType: 'json'
。
$.getJSON( '@Url.Action("gettimeline","student")', function(data) {
alert(data);
});
关于javascript - 如何将字符串转换为 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10153884/