2017-02-20 3 views
-1

У меня есть некоторые данные, которые отбрасываются из хранимой процедуры фреймворка сущности и хотят, чтобы страница выполняла итерацию по набору и присваивала значение другому элементу div.Использовать элементы в данных Json как текст

Я получил это на странице:

(Пробовал 2 разные способы ниже - KValueText2/3 столбцы заголовков возвращаются в запросе)

var KId2 = $('#Selector :selected').val() 
     $.get("/Home/getValTitles", { HeadID: KId2 }, function (data) { 
      for (var idx in data.result) { 
       var results = data.results[idx]; 
       $('#ValueText1').html(results(0)); 
       $('#ValueText2').text = results(idx).KValueText2; 
       $('#ValueText3').text = results(idx).KValueText3; 
      } 
     }) 

... и на контроллере :

public JsonResult getValTitles(string HeadID) 
     { 
      var temp2 = et.usp_Read_K_Value_Titles(HeadID); 
      return Json(temp2, JsonRequestBehavior.AllowGet); 
     } 

Как присвоить каждому из элементов в возвращаемых данных другой элемент на странице?

JSON данные, возвращаемые:

[ 
    { 
    "KValueText1":"Calls", 
    "KValueText2":"Total", 
    "KValueText3":‌​null 
    } 
] 
+1

покажите нам пример, демонстрирующий структуру объекта «данные», пожалуйста, , – ADyson

+0

@ADyson Вы имеете в виду данные, которые, как ожидается, будут возвращены из БД? – danverbs

+0

есть. объект «данных», который возвращается в 'function (data)'. Покажите нам его структуру. (Вы можете получить его, выполнив 'console.log (JSON.stringify (data));') – ADyson

ответ

0

Ваши образцы данных представляют собой массив с одним элементом, который является объектом. Это немного странная структура, потому что из вашего кода кажется, что вас интересует только один объект (поскольку вы присваиваете значения непосредственно определенным элементам). В любом случае, вот как это делается:

var KId2 = $('#Selector :selected').val() 
$.get("/Home/getValTitles", { HeadID: KId2 }, function (data) { 
    $('#ValueText1').html(data[0].KValueText1); 
    $('#ValueText2').text(data[0].KValueText2); 
    $('#ValueText3').text(data[0].KValueText3); 
}) 

N.B. Если вы можете изменить возвращаемое значение как отдельный объект вместо массива, вы можете избавиться от [0] в каждой строке и просто получить доступ к свойствам напрямую. ([0] используется для доступа к первому индексу массива. Вы также можете использовать цикл for, но это бессмысленно, поскольку у вас есть только один элемент.)

+0

Отличная благодарность и благодарность за редактирование/терпение ... новичок в этом сайте и привык к тому, как он работает. – danverbs

0

С IDX является зацикливание переменной она будет содержать элемент JSON массива в данный момент обрабатывается внутри цикла

, следовательно, вы можете использовать

  $('#ValueText2').text = idx.KValueText2; 
      $('#ValueText3').text = idx.KValueText3; 

к получить значение столбцов KValueText2, KValueText3