2009-12-17 39 views
0

我有麻煩讀一個JSON結果從控制器的方法回一個數組訪問...JSON是沒有返回結果,該結果爲

我有我的控制器這個方法:

[AcceptVerbs(HttpVerbs.Post)] 
    public JsonResult GetCurrent() 
    { 
     IList<string> profile = new List<string>(); 
     profile.Add("-1"); 
     profile.Add("Test"); 
     profile.Add(""); 

     return this.Json(profile); 
    } 

而且它是由這個jQuery阿賈克斯後叫:

$.post("/Profile/GetCurrent", function(profile) { profileCompleteOpen(profile); }, "json"); 

以及JavaScript函數呼籲後的回調:

function profileCompleteOpen(profile) { 
    alert(profile); 
    alert(profile[0]); 
} 

第一警報的結果表明,該陣列是這樣的:

[ 「-1」, 「測試」, 「」]

但第二類提醒顯示了結果這樣的:

[

而非

-1

什麼我錯在這裏做什麼......我也比其他時代的一個我這樣做,它似乎是完全一樣的。爲什麼不認識它是一個數組?

謝謝
馬特

回答

1

嘗試通過使用eval()將配置文件中的json數據轉換爲適當的對象。

例子:

var profileObject = eval('(' + profile + ')'); 
+0

完美工作,謝謝! – Matt 2009-12-18 00:37:49

0

嗯,我會做你想要做一些不同的東西。

我會返回一個完全限定的對象,然後使用它的屬性;

class MyObj 
{ 
    public string name{get;set;} 
} 

填充對象並將其作爲json對象返回。那麼你就像jQuery代碼可以像任何其他對象一樣訪問。

另一種方式可能是做一個return PartialView("MyView", model);

,將返回的局部視圖爲html回你的頁面,然後可以添加到您的HTML。

0

我認爲profile的類型是字符串而不是數組。爲什麼?檢查$.post方法參數。也許問題在那裏。

$.post("url", null, function(profile) { ... }, "json");