ASP MVC AJAX返回对象并在JavaScript中作为关联数组进行访问

时间:2015-03-06 13:46:10

标签: javascript c# asp.net ajax asp.net-mvc

我试图通过使用对C#控制器的AJAX请求来了解ASP MVC,因为它代表;我能够从我的AJAX请求中调用我的控制器。但是我很难回报我正在寻找的结果。

总的来说,我试图从数据库中获取一些数据并将其作为数组返回给JavaScript。如果在JavaScript中我可以使用关联数组以array["key"]等格式访问数据,那将是多么美妙。

然而,这是我遇到的AJAX请求,最初我从我的AJAX调用控制器。

$.ajax({
        type: "POST",
        url: "/booking/getParks",
        dataType: "JSON",
        async: false,
        success: function (data) {
            alert(data.data);
        }
    });

这可以在预订控制器中调用我非常简单的功能,如下所示。

[AcceptVerbs(HttpVerbs.Post)]
        public ActionResult getParks(string stylesheet)
        {
            var parks = Database.Open("SQLServerConnectionString").Query("SELECT * FROM Park");
            return Json(new { data = parks });
        }

现在,当我在JavaScript AJAX成功函数中发出警报时,您可以看到我调用data.data,这会输出以下内容:

enter image description here

现在,如果我要引用data.data[0],这将输出[object Object],如果我要进一步引用data.data[0]["id"],在我的情况下,我希望输出为1.相反,我收到undefined

现在,我猜这与我返回C#动态的方式有关。

但是,我假设我错误地将Object返回给AJAX。

如何返回值,以便它们是JavaScript中的关联数组?或者甚至是我可以接收数据并将其转换为JavaScript方法的方法......

谢谢。

修改

alert(JSON.stringify(data));

返回:

enter image description here

1 个答案:

答案 0 :(得分:1)

SQL Server以DataTable格式返回数据,您必须在返回脚本之前将其转换为JSON或List。

类似于:(使用Nuget中可用的Newtonsoft Json包)

string JSONresult;
JSONresult = JsonConvert.SerializeObject(parks);
return JSONresult;