2010-09-28 54 views
0

我正在使用FullCalendar模塊(很好,順便說一句),並且在填充數據庫事件時遇到問題。我正在接收由C#Web服務創建的JSON字符串。但是,當我嘗試解析它並打印出測試警報時,我什麼也沒有,但「未定義」。使用JQuery從.NET Web服務獲取JSON

我的回答字符串看起來像在Firebug:

{d="[{"ScheduleRecId":9,"EmployeeScheduled":"3","TimeStart":"\/Date(1285601677000)\/","TimeEnd":"\/Date(1285601677000)\/","UpdatedBy":"4","LastUpdate":"\/Date(1285601677000)\/","Started":true,"Finished":false}]"} 

這似乎是一個數組,但是當我嘗試從JQuery的喜歡訪問:

success: function(doc) { 
       alert(doc) //echos "Object oject" 
       alert(doc[0]) //echos "undefined" 
       alert(doc.EmployeeScheduled) //echos "null" 
} 

我也使用JSON嘗試.parse和eval()沒有太多的運氣。我怎樣才能訪問這個對象的屬性?

更新: 尼克的回答後,我決定嘗試alert(doc.d[0]);這呼應[

我注意到,如果我試圖alert(doc.d[5]);我得到h導致我相信doc.d跨作爲一個字符數組來了。我想我可以閱讀並解析它,但不應該有一種更清晰的方式來訪問屬性?

回答

0

什麼結束了工作是這樣的:

success: function(obj) { 

     var schedules = (eval(obj.d)); 

然後我可以捕捉性質是這樣的:

var event = { 
       id: schedules[0].ScheduleRecId, 
      } 
+1

我通常會將以.net 2編寫的代碼更改爲以下內容 成功:function(obj){0} {0} {0} var doc = obj.d; 然後你可以像往常一樣使用你的文檔 – 2010-09-29 16:59:42

+0

謝謝,這有點容易理解和維護。我會做出改變。 – tpow 2010-10-02 02:31:44

1

由於從ASP.NET 3.5或更高版本,它看起來就像是,你需要的d屬性,像這樣:

success: function(doc) { 
    alert(doc.d[0].EmployeeScheduled); 
} 

這是因爲根對象有一個屬性,d,這是一個數組對象...因此使用[0]獲取第一個條目,然後使用.EmployeeScheduled獲取該屬性。

+0

我 「未定義」 與此有關。我加倍檢查並發現Firebug中的一個不同的地方,顯示了{}中的整個字符串(我更新了我的文章) - 這會改變警報應該是什麼樣子? – tpow 2010-09-28 02:42:09

+0

@cinqoTimo - 您在查看JSON選項卡還是Net選項卡以查看原始響應? – 2010-09-28 09:51:46