我从数据库中获取一些数据,并希望在javascript中的组合中显示这些值,但是组合框没有填充任何值,也许我在json或javascript中做错了,有人能告诉我哪里错了吗?从db 5开始,while循环
JSONObject jsonObj= new JSONObject();
List<String> myList = new ArrayList<String>();
while(rs.next()){
t1=rs.getString(1);
myList.add(t1);
jsonObj.put("name",myList.toArray());
}
response.setContentType("application/json");
response.getWriter().write(jsonObj.toString());
希望在javascript中获得以上值
<script type="text/javascript">
$(document).ready(function() {
$("#combo").change(function() {
$.getJSON('combo.jsp', {count : this.value}, function(responseData) {
$("#combo1").empty().append ("<option>please select</option>");
var json = $.parseJSON(responseData);
var myValues = json.name;
for (var idx in myValues) {
$("#combo1").append(
$("<option></option>").html(myValues[idx]).val(myValues[idx])
);
}
});
});
</script>
请任何人至少给我一些想法,我无法找到任何解决方案
答案 0 :(得分:2)
parseJSON
检索数据时,不需要getJSON
醇>
假设响应json是结构: {name = {prop1:value1,prop2:valu2,prop3:value3 .....}}
$(document).ready(function () {
$("#combo").change(function () {
$.getJSON('combo.jsp', {
count: this.value
}, function (responseData) {
$("#combo1").empty().append("<option>please select</option>");
var myValues = responseData.name;
for (var idx in myValues) {
$("#combo1").append(
$("<option></option>").html(myValues[idx]).val(myValues[idx]));
}
});
});
});
或者如果结构是: {name = [value1,valu2,value3,.....]}
$(document).ready(function () {
$("#combo").change(function () {
$.getJSON('combo.jsp', {
count: this.value
}, function (responseData) {
$("#combo1").empty().append("<option>please select</option>");
var myValues = responseData.name;
for (var i=0; i < myValues.length; i++) {
$("#combo1").append(
$("<option></option>").html(myValues[i]).val(myValues[i]));
}
});
});
});
答案 1 :(得分:0)
我不知道您使用的是哪种浏览器。但afaik,使用innerHTML
直接插入HTML不适用于某些浏览器。
你应该这样试试:
$("#combo1")[0].options.add(new Option(label, value));
label表示字符串内部“选项” value表示“选项”的属性“值”
在您的代码中:
for (var i = 0, val; val = myValues[i]; i++)
{
$("#combo1")[0].options.add(new Option(val, val));
}
答案 2 :(得分:0)
我怀疑你是从你的getJSON CALL获取值。使用Firebug来查看你是否得到了你的ajax调用的响应。并使用console.log(responseData);内部$ .getJSON('combo.jsp',{count:this.value},function(responseData){
的console.log(responseData); });
嗨试试这个:
var options = '';
$.getJSON('combo.jsp', {
count: this.value
}, function (responseData) {
$.map(responseData, function (item) {
console.log(item);
//alert(item.code);
options += '<option value="' + item.code + '">' + item.description + '</option>';
});
}
);
$("#combo").html(options);