[英]How to convert string to JSON Object
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]
但是現在我必須顯示數據庫中的數據,所以我在控制器上調用以下函數
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;
}
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 Object,
如何在我的視圖中將從控制器返回的字符串轉換為Json Object ...
你辛苦了 讓框架為您完成。
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);
});
服務器返回的內容無效的JSON 。 或提供您的服務器端代碼,它可能是僅定義字符串而不是對象圖的有效JSON。 在JSON中:
new Date(...)
無效(JSON沒有任何日期概念)。 我相信您想建立一個數組(而不是字符串)並將其分配給jr.Data
,然后讓JsonResult
對象為您處理序列化(但是我在ASP.net MVC中沒有做到這一點)。
一旦服務器返回有效的JSON,請確保服務器使用正確的Content-Type
標頭(值為application/json
)返回它。 當您這樣做時,jQuery將看到它是JSON並將其反序列化為對象圖。 如果您不能或不想讓服務器返回有效的JSON,請在ajax
調用中添加dataType: 'json'
以強制使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.