我正在使用jquery
通过servlet
从数据库中获取值。我的脚本中的回调函数为我提供了来自database的原始信息。我可以将这些值附加到jsp
中的选项中。
这是我的Retrive_country servlet代码:
String sql1 = "SELECT * FROM state WHERE country_ref="+countryref+"
PreparedStatement pst1 = db.getConnection().prepareStatement(sql1);
ResultSet j = pst1.executeQuery();
while (j.next()) {
state_id = j.getString(1);
state = j.getString(2);
country_ref = j.getString(3);
location.setState(state);
location.setState_id(state_id);
location.setcountry_ref(country_ref);
pw.println(state_id);
pw.println(state);
pw.println(country_ref);
}
这是我的剧本:
<script>
$(document).ready(function(){
$("#country_id").change(function() {
var xyz = $("option:selected").val();
alert(xyz)
$.get("../Retrive_country?countryREF="+xyz",
{countryREF : xyz },
function(data){
console.log(data);
alert("Data: " + data);
});
});
});
</script>
这是我的jsp:
<div class="span2 clear">
<select name="country_id" id="country_id">
<option>-select-</option>
<option id="blabbb">1</option>
<option id="blabbb">2</option>
<option id="blabbb">3</option>
</select></div>
<div class="span2 clear">
<select name="state_ref" id="state_ref">
<option ></option>
</select></div>
这是我在控制台中的输出:
所有字符串都是状态值,整数是stateid。
我希望它们在jsp中单独使用。
答案 0 :(得分:1)
您最好使用后端JSON编码器。但是这个手动编码也应该有效:
后端代码:
pw.println("[");
while (j.next()) {
state_id = j.getString(1);
state = j.getString(2);
country_ref = j.getString(3);
pw.println("{stateId: " + state_id + ", stateName: \"" + state +"\"},");
}
pw.println("]");
(我假设你的state_id是整数)
客户代码:
$("#country_id").change(function() {
var xyz = $("option:selected").val();
$.get("../Retrive_country?stateadd_1=none", {countryREF : xyz }, function(data){
var states = eval(data);
$('#state_ref').empty();
$.each(states, function(index, state){
$("<option></option>")
.attr("value", state.stateId).text(state.stateName)
.appendTo('#state_ref');
});
}, 'text');
});
来自玻利维亚拉巴斯的欢呼声
答案 1 :(得分:0)
假设您可以以json的形式发送数据。你可以这样做:
var Myselect = $('#state_ref');
$.getJSON("../Retrive_country?stateadd_1=none",
{countryREF : xyz } ,function(data){
$.each(data, function(key, value) {
Myselect
.append($("<option></option>")
.attr("value",key)
.text(value));
});//end each
});//end get
如果不是json格式,你能显示你的数据是什么样的吗?
答案 2 :(得分:0)
请勿在{{1}}查询中使用+
!!
它旨在使用
之类的东西PreparedStatement
这是因为SQL injection。如上所述,逃避该注入类型的最简单方法是使用准备好的语句正确。请阅读有关使用String sql1 = "SELECT * FROM state WHERE country_ref=?"
PreparedStatement pst1 = db.getConnection().prepareStatement(sql1)
pst1.setInteger(0,country_ref);
ResultSet j = pst1.executeQuery();