заполнить выпадающий список при смене другого с помощью сервлета - PullRequest
0 голосов
/ 02 января 2012

Я новичок в Java-стойках. Я разрабатываю веб-приложение в стойках 1.3. У меня есть два раскрывающихся списка, один для местоположения, а другой - для Пола. У меня есть требование, чтобы при изменении одного раскрывающегося значения других раскрывающихся списков из базы данных для менягуглил много, и я получил код, но когда я меняю свой первый выпадающий список, второй выпадающий список не заполняется, хотя я видел в режиме отладки в Netbeans, что эти значения возвращаются из базы данных. я выполняю свою работу с базой данных в методе doGet сервлета

 <script>
 function createRequestObject()
 {

 var req;

 if(window.XMLHttpRequest)
 {
 //For Firefox, Safari, Opera
 req = new XMLHttpRequest();
 }
 else if(window.ActiveXObject)
 {
 //For IE 5+
 req = new ActiveXObject("Microsoft.XMLHTTP");
 }
 else
 {
 //Error for an old browser
 alert('Your browser is not IE 5 or higher, or Firefox or Safari or Opera');
 }

 return req;
 }

 //Make the XMLHttpRequest Object
 var http = createRequestObject();

 function sendRequest(method, url)
 {

 if(method == 'get' || method == 'GET')
 {

 http.open(method,url);
 http.onreadystatechange = handleResponse;
 http.send(null);
 }
 }

 function handleResponse()
 {

 if(http.readyState == 4 && http.status == 200)
 {

 var response = http.responseText;
 if(response)
 {

 document.getElementById("dwnfloor").innerHTML = response;
 }
 }
 }

 function getFloorDropdown(SelectedValue)
 {
 alert(SelectedValue);
 sendRequest('GET','http://localhost:8084/AssetManagement/DropDown?locid='  +SelectedValue );
 }

 </script>

 <tr>
 <td >
 <span style="color:#FF0000">*</span>Location</td>
 <td> <html:select name="RoomForm" property="name"
 onchange="getFloorDropdown(this.value)">
 <htmlption value="0">Select Location</htmlption>
 <htmlptionsCollection name="RoomForm"
 property="list" value="id" label="name" />
 </html:select>
 <td>
 </tr>
 <tr>
 <td >
  <span style="color:#FF0000">*</span>Floor
 </td>
<td id="dwnfloor">

<select name="dwnfloor">
<option value="0">Select Floor</option>
</select>
</td>
</tr>

Код сервлета

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    processRequest(request, response);
    String country=request.getParameter("locid");
    String buffer="<select name=\"dwnfloor\"><option value=\"0\">Select</option>";
    Connection connection = null;
    PreparedStatement p_statement = null;
    Statement statement = null;
    ResultSet result = null;

    try {
        DAOOperation dao= new DAOOperation();
        String sqlst = "select id,name from floor_mst where id=?";
        try {
            connection = DBConnection.getConnection();
            p_statement = connection.prepareStatement(sqlst);
            p_statement.setString(1, country);
            result = p_statement.executeQuery();

            while(result.next()) {
                buffer=buffer+"<option value=\""+result.getString("ID")+"     \">"+result.getString("name")+"</option>";
            }

            buffer=buffer+"</select>";
            response.getWriter().println(buffer);
            System.out.println(buffer);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                connection.close();
            } catch (Exception e) {
            }
        }// end finally
    } catch(Exception e) {
        System.out.println(e);
    }
}

и отображение сервлета в web.xml

web.xml

<servlet-mapping>
<servlet-name>DropDown</servlet-name>
<url-pattern>/DropDown</url-pattern>
</servlet-mapping> 

1 Ответ

0 голосов
/ 02 января 2012

В сервлете запишите response.getWriter (). Write (buffer) вместо response.getWriter (). Println (), а также попробуйте предупредить ответ, полученный от сервлета. в коде AJAX вы написали. Похоже, ваш javascript не получил ответ. Если проблема не решена, я в сети.

...