Я пытаюсь получить значения из базы данных с помощью servlet
в котором я использую объект JSON
для отправки данных в свой JSP
в моем JSP
, jQuery
обрабатывает принимаемые данные. Я могу получить данные, но только последнее значение базы данных не все значения здесь - весь мой код. Любая помощь заслуживает благодарности.
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</script>
<script>
$(document).ready(function(){
$("#country_id").change(function() {
var xyz = $("option:selected").val();
var Myselect = $('#state_ref');
$.getJSON("../Retrive_country?stateadd_1=none",
{countryREF : xyz } ,function(data){
$('#state_ref').empty();
$.each(data, function(index, state){
$("<option></option>")
.attr("value", state.stateId).text(state.stateName)
.appendTo('#state_ref');
});
});//end get
});
});
</script>
String sql1 = "SELECT * FROM state WHERE country_ref="+countryref+"
PreparedStatement pst1 = db.getConnection().prepareStatement(sql1);
ResultSet j = pst1.executeQuery();
JSONObject obj = new JSONObject();
pw.println("[");
while (j.next()) {
state_id = j.getString(1);
state = j.getString(2);
country_ref = j.getString(3);
obj.put("stateId", state_id);
obj.put("stateName", state);
}
pw.println(obj);
pw.println("]");
<div class="span2 clear">
<select name="country_id" id="country_id">
<option>-select-</option>
<option id="blabbb">america</option>
<option id="blabbb">UK</option>
<option id="blabbb">Africa</option>
</select></div>
<div class="span2 clear">
<select name="state_ref" id="state_ref">
<option ></option>
</select></div>
когда я пытаюсь console.log(data);
вот результат
здесь я получаю только одно значение (последнее значение столбца) вместо того, чтобы получать все значения из базы данных.
ArrayList<String> statelist = new ArrayList<String>();
ArrayList<String> stateidlist = new ArrayList<String>();
String sql1 = "SELECT * FROM state WHERE country_ref="+countryref+"
PreparedStatement pst1 = db.getConnection().prepareStatement(sql1);
ResultSet j = pst1.executeQuery();
JSONObject obj = new JSONObject();
pw.println("[");
while (j.next()) {
state_id = j.getString(1);
state = j.getString(2);
country_ref = j.getString(3);
stateidlist.add(state_id);
statelist.add(state);
}
obj.put("statelist",statelist);
obj.put("stateidlist",stateidlist);
pw.println("]");
JQuery:
<script>
$(document).ready(function(){
$("#country_id").change(function() {
var xyz = $("option:selected").val();
var Myselect = $('#state_ref');
$.getJSON("../Retrive_country?stateadd_1=none",
{countryREF : xyz } ,function(data){
console.log(data);
$('#state_ref').empty();
$.each(data, function(index, state){
for(var prop in state.stateidlist){
var stateidvalue = state.stateidlist[prop];
var statelistvalue = state.statelist[prop];
$("<option></option>")
.attr("value", stateidvalue).text(statelistvalue)
.appendTo('#state_ref');
}
});
});//end get
});
});
</script>
Как показано на выходе консоли, вы получаете только один объект из сервлета, и это причина, по которой отображается только один параметр.
Вы можете построить json, используя JSONObject
и JSONArray
вместе, например, создание json-строки с использованием JSONObject и JSONArray
или, может быть, если вы измените конкатенацию, включив запятые и распечатав объект в цикле
например, непроверенный
JSONObject obj = new JSONObject();
pw.println("[");
while (j.next()) {
state_id = j.getString(1);
state = j.getString(2);
country_ref = j.getString(3);
obj.put("stateId", state_id);
obj.put("stateName", state);
pw.println(obj+",");
}
pw.println("]");
JSONArray
, если конкатенация не работает.
console.log(datat);
в первой строке обратного вызоваgetJSON
. Как только вы это сделаете, пожалуйста, опубликуйте результаты здесь, если вам нужна дополнительная помощь. Часть js вроде бы в порядке, т.е. пример с вашим кодом и фиктивными данными jsfiddle.net/BFWB8