Aplicación web con ajax y BD access
Tengo una aplicación web hecha en netbeans donde tengo dos combos, al seleccionar una opción en el primero, necesito que el segundo se cargue con una consulta a la BD. Pero esto debe ser sin recargar la página.
Respuesta de khanser
1
1
khanser, Ingeniero Técnico en informática de Gestión
Lo primero que debes hacer es bajarte la librería javascript de Ajax y leerte un poco la documentación para ver por donde van los tiros.
Después te creas una Acción en tu Servlet Container (Servidor J2EE) y esta acción debe poder estar mapeada para poder llamarla por url (ejemplo http://servidor/test/llamada.do)
No hay más misterio que usar la llamada con la docu de Ajax que te venga (basta incluso con solo mirar los métodos que te proporciona y los datos que le tienes que pasar por parámetro), y después solo tendrás que ponerle los valores al combo.
Si te pierdes en el proceso coméntamelo
Después te creas una Acción en tu Servlet Container (Servidor J2EE) y esta acción debe poder estar mapeada para poder llamarla por url (ejemplo http://servidor/test/llamada.do)
No hay más misterio que usar la llamada con la docu de Ajax que te venga (basta incluso con solo mirar los métodos que te proporciona y los datos que le tienes que pasar por parámetro), y después solo tendrás que ponerle los valores al combo.
Si te pierdes en el proceso coméntamelo
Hola gracias por responder.
Mi duda en estos momentos es, en que parte del código jsp debo realizar la conexión y la consulta a la BD.
En algunos ejemplos en PHP he visto que lo hacen en el interior de las opciones del combo..
Me gustaría saber si puedo crear una clase que controle las conexiones para que el código sea más ordenado.
Y como y cuando llamar la clase.
Mi duda en estos momentos es, en que parte del código jsp debo realizar la conexión y la consulta a la BD.
En algunos ejemplos en PHP he visto que lo hacen en el interior de las opciones del combo..
Me gustaría saber si puedo crear una clase que controle las conexiones para que el código sea más ordenado.
Y como y cuando llamar la clase.
Te he encontrado un link buscando en google que te irá de perlas.
http://www.cristalab.com/tutoriales/introduccion-a-ajax-con-php-y-formularios-c165l/
en cuanto a llamar a las funciones, puedes hacerlo desde los propios eventos de html ej.
<select onchange="llamada_javascript()">
<option value="val1">val1</option>
<option value="val2">val2</option>
</select>
o el evento desde javascript
<script>
document.getElementById('micombo').onchange = function() {
<span style="white-space: pre;"> </span>//Funcion que hace la llamada
}
</script>
<select id="micombo">
<option value="val1">val1</option>
<option value="val2">val2</option>
</select>
Si te pierdes coméntamelo.
La contestación es abierta porque interesa tanto saberlo hacer, como investigar por tu cuenta para cuando tengas que usar nuevas tecnologías en un futuro :p
http://www.cristalab.com/tutoriales/introduccion-a-ajax-con-php-y-formularios-c165l/
en cuanto a llamar a las funciones, puedes hacerlo desde los propios eventos de html ej.
<select onchange="llamada_javascript()">
<option value="val1">val1</option>
<option value="val2">val2</option>
</select>
o el evento desde javascript
<script>
document.getElementById('micombo').onchange = function() {
<span style="white-space: pre;"> </span>//Funcion que hace la llamada
}
</script>
<select id="micombo">
<option value="val1">val1</option>
<option value="val2">val2</option>
</select>
Si te pierdes coméntamelo.
La contestación es abierta porque interesa tanto saberlo hacer, como investigar por tu cuenta para cuando tengas que usar nuevas tecnologías en un futuro :p
Hola gracias por responder..
Ya el escript lo llamo desde el primer combo con el onchange, ¿dentro del script me conecto hago la consulta obtengo el resultset pero como acceso al segundo combo para llenarlo?
Saludos
Ignacio B.
Ya el escript lo llamo desde el primer combo con el onchange, ¿dentro del script me conecto hago la consulta obtengo el resultset pero como acceso al segundo combo para llenarlo?
Saludos
Ignacio B.
Por lo que entiendo en javascript recibes datos, lo único que necesitas es crearte un bucle que te vaya insertando valores en el combo, ejemplo:
for(int i = 0;i < 10;i++){
document.getElementById("combo") = new Option(value,cadena);
}
Cada Option será una opción que se te creará en el combo, el valor visible es "cadena" y el que se pasará por formulario será "value", tenlo en cuenta.
Seguimos en contacto
for(int i = 0;i < 10;i++){
document.getElementById("combo") = new Option(value,cadena);
}
Cada Option será una opción que se te creará en el combo, el valor visible es "cadena" y el que se pasará por formulario será "value", tenlo en cuenta.
Seguimos en contacto
Hola gracias por tus respuestas...
Necesito crear una función de ajax que haga lo siguiente:
Tengo una clase de java, que tiene una función conexión, con la cual creo una conexión con la BD Access, además tiene una función que retorna un objeto de tipo resulset, el cual contiene la respuesta a la consulta de la BD.
¿Cómo puedo obtener este objeto resulset desde el javascript que esta en el JSP para poder rrecorrerlo y llenar el combo?
Saludos
Ignacio.
Este es mi código:
Esta es la página JSP
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Solicitudes de Categoria 5 y 6</title>
<script type="">
function llenarTemp(){
¿Cómo acceso al método que genera la consulta que esta en la clase java
y como llego con los datos acá para llenar el otro combo?
}
</script>
</head>
<body background="t6_00005.jpg">
<form name="Solicitud" method="POST" action="">
<select name="lista2" onchange="llenarTemp()">
<option>Selecione un tarifario</option>
<option value="1">WHFD</option>
<option value="2">WHFP</option>
<option value="3">WHFI</option>
</select>
<select name="lista4">
<option>Seleccione un Template</option>
</select>
<br>
<br>
</form>
</body>
</html>
Esta es la clase JAVA
//Aqui genero una conexion//
public class conexionAccess {
public Connection conexion = null;
public ResultSet rs;
public Statement stmt;
public void Conexion(){
if (conexion != null)
return;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
System.out.println("si llega aqui");
conexion = DriverManager.getConnection ("jdbc:odbc:baseDatos","","");
System.out.println("no llega aqui");
stmt = conexion.createStatement();
} catch (Exception ex) {
ex.printStackTrace();
}
}
//Aqui genero una consulta y obtemgo un resultado//
public Object SelectTemplatesCat5(){
Conexion();
String sql = "SELECT Nombre_Template FROM Cat05_Templates";
try{
rs = stmt.executeQuery(sql);
rs.next();
return rs;
} catch (Exception e){
System.out.println(e);
}
return null;
}
}
Necesito crear una función de ajax que haga lo siguiente:
Tengo una clase de java, que tiene una función conexión, con la cual creo una conexión con la BD Access, además tiene una función que retorna un objeto de tipo resulset, el cual contiene la respuesta a la consulta de la BD.
¿Cómo puedo obtener este objeto resulset desde el javascript que esta en el JSP para poder rrecorrerlo y llenar el combo?
Saludos
Ignacio.
Este es mi código:
Esta es la página JSP
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Solicitudes de Categoria 5 y 6</title>
<script type="">
function llenarTemp(){
¿Cómo acceso al método que genera la consulta que esta en la clase java
y como llego con los datos acá para llenar el otro combo?
}
</script>
</head>
<body background="t6_00005.jpg">
<form name="Solicitud" method="POST" action="">
<select name="lista2" onchange="llenarTemp()">
<option>Selecione un tarifario</option>
<option value="1">WHFD</option>
<option value="2">WHFP</option>
<option value="3">WHFI</option>
</select>
<select name="lista4">
<option>Seleccione un Template</option>
</select>
<br>
<br>
</form>
</body>
</html>
Esta es la clase JAVA
//Aqui genero una conexion//
public class conexionAccess {
public Connection conexion = null;
public ResultSet rs;
public Statement stmt;
public void Conexion(){
if (conexion != null)
return;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
System.out.println("si llega aqui");
conexion = DriverManager.getConnection ("jdbc:odbc:baseDatos","","");
System.out.println("no llega aqui");
stmt = conexion.createStatement();
} catch (Exception ex) {
ex.printStackTrace();
}
}
//Aqui genero una consulta y obtemgo un resultado//
public Object SelectTemplatesCat5(){
Conexion();
String sql = "SELECT Nombre_Template FROM Cat05_Templates";
try{
rs = stmt.executeQuery(sql);
rs.next();
return rs;
} catch (Exception e){
System.out.println(e);
}
return null;
}
}
No se como se me fue la cabeza que acabé pensando que estabas hablándome de PHP, perdona jajajajaja
para empezar veo una cosa un poco rara aquí:
String sql = "SELECT Nombre_Template FROM Cat05_Templates";
try{
rs = stmt.executeQuery(sql);
rs.next();
return rs;
} catch (Exception e){
System.out.println(e);
}
Devuelves el rs, en vez de coger el objeto que te devuelve "rs.getString("Nombre_Template")"
Por otro lado, volviendo a donde nos concierne.
Buscando otro poco por internet he encontrado este link que si que le concierne a usted, donde explica cómo hacer llamadas ajax y recibirlas por java servlets con mucho detalle:
http://www.devarticles.com/c/a/Java/J2EE-and-AJAX-AJAX-with-Servlets/1/
Si no anda usted muy bien de inglés coméntemelo y le haré una breve explicación de ese texto.
para empezar veo una cosa un poco rara aquí:
String sql = "SELECT Nombre_Template FROM Cat05_Templates";
try{
rs = stmt.executeQuery(sql);
rs.next();
return rs;
} catch (Exception e){
System.out.println(e);
}
Devuelves el rs, en vez de coger el objeto que te devuelve "rs.getString("Nombre_Template")"
Por otro lado, volviendo a donde nos concierne.
Buscando otro poco por internet he encontrado este link que si que le concierne a usted, donde explica cómo hacer llamadas ajax y recibirlas por java servlets con mucho detalle:
http://www.devarticles.com/c/a/Java/J2EE-and-AJAX-AJAX-with-Servlets/1/
Si no anda usted muy bien de inglés coméntemelo y le haré una breve explicación de ese texto.
- Compartir respuesta
- Anónimo
ahora mismo