使用 JQUERY 将包含数据集的 JSON 绑定到下拉列表
Bind JSON containing a dataset, to dropdownlist using JQUERY
我有一个由 WCF 服务返回的 JSON string
,它在数据中包含两个表,作为其中的一个字符串:
JSON
{
"GetYearsResult":
{
"Data": "{"Table":[{"holiday_date":null},{"holiday_date":1900},
{"holiday_date":2011},{"holiday_date":2012},{"holiday_date":2013},
{"holiday_date":2014},{"holiday_date":2015},{"holiday_date":2016},
{"holiday_date":2017},{"holiday_date":2018},{"holiday_date":2019},
{"holiday_date":2020},{"holiday_date":2021},{"holiday_date":2022},
{"holiday_date":2023},{"holiday_date":2024},{"holiday_date":2025}]
,"Table1":[{"holiday_day":1}]}",
"Metadata":
{
"Response": 1000,
"ResponseCode": 1000,
"ResponseMessage": "Success",
"ResponseTime": "18-Mar-2015 15:29:55"
}
}
}
我尝试使用 JavaScript
绑定它,如下所示:
function ConsumeData(data) {
var response = $.parseJSON(data);
$('#ddlYears').empty();
//code to bind data to ddl
var ddl = D.getElementById('ddlYears');
var opt = D.createElement("option");
opt.text = '--Select--';
opt.value = 0;
ddl.options.add(opt);
for (i = 0; i < response.Table.length; i++) {
opt = D.createElement("option");
opt.text = response.Table[i]['holiday_date'];
opt.value = response.Table[i]['holiday_date'];
ddl.options.add(opt);
}
}
如何使用 JQUERY
实现同样的效果?
谢谢!
试试这个:
var $ddl = $('#ddlYears');
$("<option>").val(0).text('--Select--').appendTo($ddl);
for (var i = 0; i < response.Table.length; i ++) {
$("<option>").val(response.Table[i]['holiday_date'])
.text(response.Table[i]['holiday_date'])
.appendTo($ddl);
}
我自己想出了解决办法! :)
问题是 JSON 对象包含 GetYearsResult
作为 table 的集合,要找到那些 table,我们必须指定:
data.GetYearsResult.Data
和
data.GetYearsResult.MetaData
.
下面的函数接受 JSON 数据、下拉列表名称,并使用 Jquery
将数据集的第一个 table 绑定到 drop-down list
,将第二个绑定到 textbox
。
var result = data.GetYearsResult.Data;
var ddl = D.getElementById('ddlYears');
function ConsumeData(result, ddl) {
var response = $.parseJSON(result);
var ddl = $('#ddlYears');
ddl.empty();
ddl.append($("<option></option>").val('-1').html('--select--'));
$.each(response.Table, function (key, value) {
ddl.append($("<option></option>").val(value.holiday_date).html(value.holiday_date));
});
$('#txtNew').val(response.Table1[0]['holiday_day']);
}
我有一个由 WCF 服务返回的 JSON string
,它在数据中包含两个表,作为其中的一个字符串:
JSON
{
"GetYearsResult":
{
"Data": "{"Table":[{"holiday_date":null},{"holiday_date":1900},
{"holiday_date":2011},{"holiday_date":2012},{"holiday_date":2013},
{"holiday_date":2014},{"holiday_date":2015},{"holiday_date":2016},
{"holiday_date":2017},{"holiday_date":2018},{"holiday_date":2019},
{"holiday_date":2020},{"holiday_date":2021},{"holiday_date":2022},
{"holiday_date":2023},{"holiday_date":2024},{"holiday_date":2025}]
,"Table1":[{"holiday_day":1}]}",
"Metadata":
{
"Response": 1000,
"ResponseCode": 1000,
"ResponseMessage": "Success",
"ResponseTime": "18-Mar-2015 15:29:55"
}
}
}
我尝试使用 JavaScript
绑定它,如下所示:
function ConsumeData(data) {
var response = $.parseJSON(data);
$('#ddlYears').empty();
//code to bind data to ddl
var ddl = D.getElementById('ddlYears');
var opt = D.createElement("option");
opt.text = '--Select--';
opt.value = 0;
ddl.options.add(opt);
for (i = 0; i < response.Table.length; i++) {
opt = D.createElement("option");
opt.text = response.Table[i]['holiday_date'];
opt.value = response.Table[i]['holiday_date'];
ddl.options.add(opt);
}
}
如何使用 JQUERY
实现同样的效果?
谢谢!
试试这个:
var $ddl = $('#ddlYears');
$("<option>").val(0).text('--Select--').appendTo($ddl);
for (var i = 0; i < response.Table.length; i ++) {
$("<option>").val(response.Table[i]['holiday_date'])
.text(response.Table[i]['holiday_date'])
.appendTo($ddl);
}
我自己想出了解决办法! :)
问题是 JSON 对象包含 GetYearsResult
作为 table 的集合,要找到那些 table,我们必须指定:
data.GetYearsResult.Data
和data.GetYearsResult.MetaData
.
下面的函数接受 JSON 数据、下拉列表名称,并使用 Jquery
将数据集的第一个 table 绑定到 drop-down list
,将第二个绑定到 textbox
。
var result = data.GetYearsResult.Data;
var ddl = D.getElementById('ddlYears');
function ConsumeData(result, ddl) {
var response = $.parseJSON(result);
var ddl = $('#ddlYears');
ddl.empty();
ddl.append($("<option></option>").val('-1').html('--select--'));
$.each(response.Table, function (key, value) {
ddl.append($("<option></option>").val(value.holiday_date).html(value.holiday_date));
});
$('#txtNew').val(response.Table1[0]['holiday_day']);
}