我从实体框架存储过程中撤回了一些数据,并希望页面迭代整个集合并将值分配给不同的div元素。
我在页面上看到了这个:
(在下面尝试了两种不同的方式 - 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
}
]
答案 0 :(得分:0)
由于idx是循环变量,它将包含当前正在循环中处理的json数组元素
因此你可以使用
$('#ValueText2').text = idx.KValueText2;
$('#ValueText3').text = idx.KValueText3;
获取列KValueText2,KValueText3
的值答案 1 :(得分: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
循环,但由于您只有一个元素,因此它没有意义。)