Json没有返回可作为数组访问的结果

时间:2009-12-17 04:59:21

标签: asp.net-mvc ajax json post controller

我从控制器方法中读取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 ajax帖子正在调用它:

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

并在帖子的回调中调用了javascript函数:

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

第一个警报的结果显示如下数组:

  

[ “ - 1”, “测试”, “”]

但是第二个警报的结果显示了这个:

  

[

而不是

  

-1

我在这里做错了什么......我把它与其他时间进行了比较我正在这样做,而且看起来完全相同。为什么不识别它是一个阵列?

谢谢,
马特

3 个答案:

答案 0 :(得分:1)

尝试使用eval()将配置文件中的json数据转换为适当的对象。

示例:

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

答案 1 :(得分:0)

嗯,我会做你想做的事情。

我要么返回一个完全限定的对象,然后使用它的属性;

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

填充对象并将其作为json对象返回。那么你的jquery代码可以像任何其他对象一样访问。

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

这会将部分视图作为html返回到您的页面,然后您可以将其附加到您的html。

答案 2 :(得分:0)

我认为profile的类型是字符串而不是数组。为什么?检查$.post方法参数。也许问题就在那里。

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