我有两个文本框,我试图将其用于自动完成。两者的源数据均来自 ASP.NET ASMX Web 服务,以 JSON 格式返回。我正在返回一个 List,其中 NameValue 定义为:
public struct NameValue { 公共(public)字符串名称;公共(public)字符串值; }
如何解析此数据,以便可以将所选下拉列表名称的值存储在隐藏字段中?
这是页面加载时到目前为止我的代码,msg.d
包含 JSON 数据(我看到 msg.d[0].Name
和 >msg.d[0].Value
)
$.ajax({
type: "POST",
url: '/Services/Team.asmx/GetClubTeams',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
$('#<%= txtFromTeam2.ClientID %>, #<%= txtToTeam2.ClientID %>').autocomplete({
source:msg.d
});
},
error: function(xhr, msg) {
alert(msg);
}
});
最佳答案
回答了我自己的问题。诀窍是要知道名称/值应采用以下形式:
public struct TeamData { 公共(public)字符串 key ;公共(public)字符串值; }
看来值
(小写)对 jQuery 很重要。
$.ajax()
调用如下...希望这对某人有帮助:
$.ajax({
type: "POST",
url: '/Services/Team.asmx/GetClubTeams',
contentType: "application/json; charset=utf-8",
dataType: "json",
data: "{}",
success: function(data) {
$('#txtFromTeam2').autocomplete({
source: data.d,
minLength: 3,
focus: function(event, ui) {
$('#txtFromTeam2').val(ui.item.value);
return false;
},
select: function(event, ui) {
$('#txtFromTeam2').val(ui.item.value);
$('#<%= txtFromTeam2Id.ClientID %>').val(ui.item.key);
populatePlayers(ui.item.key);
return false;
}
});
$('#txtToTeam2').autocomplete({
source: data.d,
minLength: 3,
focus: function(event, ui) {
$('#txtToTeam2').val(ui.item.value);
return false;
},
select: function(event, ui) {
$('#txtToTeam2').val(ui.item.value);
$('#<%= txtToTeam2Id.ClientID %>').val(ui.item.key);
return false;
}
});
},
error: function(xhr, msg) {
alert(msg);
}
});
关于jQuery 通过 JSON 自动完成来自 ASMX 的名称/值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4126925/