Как получить все значения, используя JSON, JQuery, Servlet?

0

Я пытаюсь получить значения из базы данных с помощью servlet в котором я использую объект JSON для отправки данных в свой JSP в моем JSP, jQuery обрабатывает принимаемые данные. Я могу получить данные, но только последнее значение базы данных не все значения здесь - весь мой код. Любая помощь заслуживает благодарности.

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("]");

JSP:

<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); вот результат

Изображение 174551

здесь я получаю только одно значение (последнее значение столбца) вместо того, чтобы получать все значения из базы данных.

  • 0
    Вам необходимо проверить данные, возвращаемые из сервлета, пожалуйста, зарегистрируйте данные в консоли вашего браузера, console.log(datat); в первой строке обратного вызова getJSON . Как только вы это сделаете, пожалуйста, опубликуйте результаты здесь, если вам нужна дополнительная помощь. Часть js вроде бы в порядке, т.е. пример с вашим кодом и фиктивными данными jsfiddle.net/BFWB8
  • 0
    я пытаюсь получить значения, используя JSON OBJECT через сервлет, и когда я пытаюсь console.log (data); он говорит [Object] 0: Object stateId: "1302" stateName: "ssss" proto : Длина объекта: 1 proto : Array [0]
Показать ещё 1 комментарий
Теги:
jsp
servlets

2 ответа

0
Лучший ответ
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>
0

Как показано на выходе консоли, вы получаете только один объект из сервлета, и это причина, по которой отображается только один параметр.

Вы можете построить 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("]");
  • 0
    Все тот же он показывает то же самое последнее значение столбца.
  • 0
    @ 3bu1, пожалуйста, проверьте результаты SQL-запроса. Если они в порядке, используйте решение JSONArray , если конкатенация не работает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню