假设在数据库中有一个包含多个列的表(例如student records
),但我的HTML页面只显示其中的一些。例如:包含sno
,sname
,addr
,age
,dept
和dob
列的表格,我的页面只有3个字段:sno
,sname
,dept
。在这里,我在组合框控件中显示dept
字段,其余字段是文本和空值。
我的要求是:当我从组合框中选择dept时,sno
和sname
等对应的行标注必须自动显示在文本字段中。我怎么能这样做?
答案 0 :(得分:0)
更改部门时,会对服务器进行ajax调用。您的服务器将您的对象作为JSON返回。您的ajax调用中的成功处理程序从JSON对象中获取所需的字段,并将相应的html元素设置为这些字段。例如,如果您使用的是jQuery:
var myUrl = "http://some.domain/action/";
var success = function(response) {
$('#textField1').val(response.sno);
$('#textField2').val(response.sname);
}
$('#myDropDown').change(function() {
$.get(myUrl + $(this).val(), success);
});
如果你不想发回对象的所有属性,因为你想要最小化带宽,你可以形成自己的JSON对象,但这有点痛苦,如果你的对象不是很大,你不妨使用你正在使用的框架中可用的任何JSON序列化程序,只需序列化对象并通过网络发送它。
或者这是另一种选择。您可以只进行一次初始AJAX调用,然后创建从部门到您要设置的其他字段的地图。例如:
var map = {};
var success = function(response) {
for (obj in response.objects) {
map[obj.department] = { sno: obj.sno, sname: obj.sname };
}
}
$.get(myUrl, success);
$('#myDropDown').change(function() {
var obj = map[$(this).val()];
$('#textField1').val(obj.sno);
$('#textField2').val(obj.sname);
}
希望有所帮助。