无法通过AJAX调用我的控制器方法

时间:2015-01-20 10:22:46

标签: jquery ajax asp.net-mvc

我的控制器中有这个方法:

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static List<List<GraphData>> GetData()
{
    List<List<GraphData>> result = new List<List<GraphData>>();
    if (HttpContext.Current.Session["GraphSensorData"] != null)
    {
        result = (List<List<GraphData>>)HttpContext.Current.Session["GraphSensorData"];
        return result;
    }
    else 
        return null;
}

我为它设置了一个断点,但是下面的ajax根本没有调用它:

$(document).ready(function () {
    $.ajax({
        type: "POST",
        url: '/MainPage/GetData',
        data: {},
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        success: function(data){
            //some logic
        }
    )};

我想设置一个数据监视器,这样我就可以看到我为了进一步操作数据而获得的成功但是没有成功。

2 个答案:

答案 0 :(得分:3)

请记住,这里不是Web窗体,而是ASP.NET MVC。

如果您希望通过Ajax调用ASP.NET MVC控制器方法:

  • 该方法不应为static
  • 您不需要使用属性来说它是一种网络方法,而是返回JsonResult

我认为这样的事情会起作用:

public ActionResult GetData()
{
    List<List<GraphData>> result = new List<List<GraphData>>();
    if (HttpContext.Current.Session["GraphSensorData"] != null)
    {
        result = (List<List<GraphData>>)HttpContext.Current.Session["GraphSensorData"];
        return Json(result, JsonRequestBehavior.AllowGet);
    }
    else return Json(new object(), JsonRequestBehavior.AllowGet);
}

答案 1 :(得分:0)

$(document).ready(function () {
$.ajax({
    type: "POST",
    url: '@Url.Action("ACTION NAME","CONTROLLER NAME")',
    data: {},
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    success: function(data){
        //some logic
    }
)};

对于网址部分,请使用正确的操作名称和控制器名称