2015-03-10 2 views
0

У меня есть список, определенный в моем контроллере. Теперь я хочу получить пользовательский ввод, проверить, существует ли он в списке в контроллере, а затем получить все его значение.Извлечь значение с помощью ajax

Контроллер

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; 
    } 
+0

показать метод контроллера для 'DashData()' –

+0

Вы хотите сравнить только с «а» значение? или со всеми значениями? –

+0

Карта инициализируется в том же контроллере, поэтому она будет пустой, и u будет делать для всех без изменений! –

ответ

1

Во-первых, изменить АЯКС вызов

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) { ... })

Следующая модифицируем метод контроллера, чтобы принять параметр ваше прохождение и вернуть согласующего Map объект

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

Использование вами 'qv.val (data.name);' не имеет смысла, поэтому вам может потребоваться уточнить, что вы хотите делать с возвращаемыми значениями –

+0

Я просто хочу установить значения, полученные в Vat T, на другую метку в HTML – Richa

+0

Итак, вы должны присвоить метке атрибут 'id', а затем' $ ('# myLabel'). text (data.T); '(предполагая по метке, вы имеете в виду фактическую метку -' ') Для элементов управления (ввод и т. Д.) Используйте' .val() ', а для других элементов используйте' .text() ' –

1

Ваш контроллер должен выглядеть следующим образом:

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

Хотя мД является список вы определили первые

затем Ур AJAX вызов должен быть таким:

$.ajax({ 
      url: "../Home/DashData", 
      type: "POST", 
      data: {'a':a}, 
      success: function (data) { 
       qv.val(data.a); 
      } 
     }); 
Смежные вопросы