如何使用JSON,JQuery,Servlet获取所有值?

时间:2014-01-22 07:43:10

标签: java jquery json jsp servlets

我正在尝试使用servlet从数据库中获取值,其中我使用JSON对象将数据发送到JSP JSP中的jQuery,{{1处理接收数据。我能够获取数据,但只能获取数据库的最后一个值,而不是这里的所有值都是我的代码,任何帮助都是感谢。

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>

Servlet:

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);时,结果是

enter image description here

这里我只得到一个值(列的最后一个值),而不是从数据库中获取所有值。

2 个答案:

答案 0 :(得分:0)

如控制台输出中所示,您只从servlet中获取一个对象,这就是显示只有一个选项的原因。

您可以使用JSONObjectJSONArray一起构建json,例如creating json string using JSONObject and JSONArray

或者如果您通过包含逗号并在循环中打印对象来修改连接

e.g。 未测试

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

答案 1 :(得分: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>