Servlets , JSP & AJAX ??

Hola chavos
Tengo una consulta que hacerles
Tengo un archivo búsqueda.jsp dentro de una carpeta llamada pages en esta jsp un botón buscar va a un ajax y este a su vez manda llamar un Servlet el Servlet se llama BuscaDatos pero en ejecución me dice que no se encuentra FichasAcademicas/pages/BuscaDatos y no sé por qué
busqeda.jsp


onclick="btnBusquedaId_onclick();"      value="Búscar">

busqueda.js

function cargaFichas(boleta, tipo)
{
        …
        var url="BuscaDato";
        xmlHttp.onreadystatechange=stateChanged;
        xmlHttp.open("POST",url,true);
        xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        var datos="id="+boleta+"&tipobusqueda="+tipo;
        xmlHttp.send(datos);
}

web.xml

        <servlet>
                <servlet-name>BuscaDatos</servlet-name>
                <servlet-class>com…ajax.BuscaDatos</servlet-class>
        </servlet>

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

De antemano gracias

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de beto.bateria

El problema sera del valor de

El problema sera del valor de la variable URL? ya pusiste ese valor en el navegador que usas?

Aja

Escribi FichasAcademicas/BuscaDatos y si me lleva al Servlet esto en el navegador pero no sé por qué quiere ir a pages/BuscaDatos, no lo sé con seguridad pero creo es por algo de servlet-mapping, pero no soy muy diestro con los servlets

Imagen de Marce

seguro?

y estás seguro de que así debes formar la url con sus parámetros? No te faltará algo como url = "/BuscaDato"; y en los parámetros datos ="?id="+boleta+"&tipobusqueda="+tipo;????

Si

la linea ques escribes ="?id="+boleta+"&tipobusqueda="+tipo;? no va porque va por POST y la diagonal de /BuscaDatos la acabo de probar de esa forma y tampoco, también intente ../BuscaDatos y nada

A también en el var url = escribí BuscaDato en vez de BuscaDatos pero fue error de dedo

Alguna otra pista

Imagen de Marce

llamada...

ya habías utilizado esta forma de llamar al AJAX y te había funcionado? Existe alguna forma de imprimir la url antes de que sea enviada para ver como es que se está mandando llamar? La consola de errores del navegador no te cacha ningun error de JS? Yo creo que es problema de la url.

Puedes probar, mandando llamar otro servlet diferente que no tenga parámetros a ver que pasa. Por ahora no se me ocurre más.

Rutas absolutas y relativas

El problema es que la url es una ruta relativa: var url="BuscaDato";
Esto quiere decir que si tu JSP se encuentra en la ruta "FichasAcademicas/pages/" la petición AJAX será a "FichasAcademicas/pages/BuscaDatos"
Para que funcione tienes que poner la ruta absoluta, es decir: var url="/FichasAcademicas/BuscaDato"
De esta forma siempre se buscará esta dirección.

Como el contexto de tu aplicación puede variar, es buena práctica que pidas el contexto de tu aplicación al objeto Request en vez de solo escribir "FichasAcademicas"

Ok

Eso suena lógico lo probaré así, gracias