我试图通过使用对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
,这会输出以下内容:
现在,如果我要引用data.data[0]
,这将输出[object Object]
,如果我要进一步引用data.data[0]["id"]
,在我的情况下,我希望输出为1.相反,我收到undefined
。
现在,我猜这与我返回C#动态的方式有关。
但是,我假设我错误地将Object返回给AJAX。
如何返回值,以便它们是JavaScript中的关联数组?或者甚至是我可以接收数据并将其转换为JavaScript方法的方法......
谢谢。
修改
alert(JSON.stringify(data));
返回:
答案 0 :(得分:1)
SQL Server以DataTable格式返回数据,您必须在返回脚本之前将其转换为JSON或List。
类似于:(使用Nuget中可用的Newtonsoft Json包)
string JSONresult;
JSONresult = JsonConvert.SerializeObject(parks);
return JSONresult;