使用ajax获取值

时间:2015-03-10 04:37:42

标签: jquery ajax asp.net-mvc

我在控制器中定义了一个列表。现在我想获得用户输入,检查它是否存在于控制器的列表中,然后获取所有相关值。

控制器

private List<M> Ma()
   {
     List<M> md = new List<M>()
      { 
      new M{ R="a", A=300, T= 1, P=40, N=1200},
      new M{ R="Bl", A=100, T= 150, P=400, N=1200},
       };
      return mapData;
   }

2 个答案:

答案 0 :(得分:1)

您的控制器应如下所示:

public ActionResult DashData(double a)
{
    return Json(md.FirstOrDefault(map=>map.a == a));
}

虽然md是您首先定义的列表

那么你的AJAX调用应该是这样的:

    $.ajax({
            url: "../Home/DashData",
            type: "POST",
            data: {'a':a},
            success: function (data) {
                qv.val(data.a);
            }
        });

答案 1 :(得分:1)

首先,将ajax调用更改为

var a = $('input').val();
var qv = $('.act');
var tv = $('.tot'); // you don't seem to use this
$.ajax({
  url: '@Url.Action("DashData", "Home")', // never hard code the url!
  type: "POST",
  data: { a: a }, // change this
  success: function (data) {
    // access the properties of the object
    var A = data.A; // returns 300
    var T = data.T; // returns 1
    var P = data.P; // returns 40
    var N = data.N; // returns 200
  }
});

附注:

  1. var a = $('input').val();将始终返回值 视图中的第一个<input>,因此建议您使用id属性 ($('#myInput').val();
  2. 您还可以将其简化为$.post('Url.Action("DashData", "Home"), {a: a }, function(data) { ... })
  3. 接下来修改控制器方法以接受传递的参数并返回匹配的Map对象

    public ActionResult DashData(string a)
    {
      // Get the first matching MapModel
        MapModel map = MapData().FirstOrDefault(m => m.R == a);
        return Json(map);
    }