如何通过dyanmicaly选择组合选择来填充页面中的文本字段?

时间:2010-12-03 11:21:58

标签: ajax

假设在数据库中有一个包含多个列的表(例如student records),但我的HTML页面只显示其中的一些。例如:包含snosnameaddragedeptdob列的表格,我的页面只有3个字段:snosnamedept。在这里,我在组合框控件中显示dept字段,其余字段是文本和空值。

我的要求是:当我从组合框中选择dept时,snosname等对应的行标注必须自动显示在文本字段中。我怎么能这样做?

1 个答案:

答案 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);
}

希望有所帮助。