2015-09-16 1 views
1

J'ai écrit mon ajaxpost dans mon fichier Java Script comme ceci: Où obj1 est un objet StringifiedJSON.Ajax post est incapable de trouver l'URL, ce qui conduit à la classe java, avec des annotations. Donne une erreur 404

$.ajax({ 
    url:'./rest/input/post', 
    type: 'POST', 
    data:obj1, 
    contentType: 'application/json', 
    dataType:'json', 
    success:function(data) 
    { 
     var values = JSON.stringify(data); 
     alert(values); 
    }, 
},'json'); 

Je passe à une classe Java qui est comme ci-dessous:

@Path("/input") 
public class InputResponse { 
@POST 
@Path("/post") 
@Consumes(MediaType.APPLICATION_JSON) 
@Produces(MediaType.APPLICATION_JSON) 
    public Input postInputRecord(Input obj){ 
     return obj; 
    } 
} 

Mon fichier Web.xml est comme ci-dessous:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
version="3.0" 
metadata-complete="true"> 
<display-name>CAD</display-name> 
<servlet> 
<servlet-name>Jersey Web Application</servlet-name> 
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
<init-param> 
    <param-name>jersey.config.server.provider.packages</param-name> 
    <param-value>com.cad.example.response</param-value> 
</init-param> 
<init-param> 
    <param-name>com.sun.jersey.config.property.packages</param-name> 
    <param-value>com.cad.data.model</param-value> 
</init-param> 
<load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
<servlet-name>Jersey Web Application</servlet-name> 
<url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 
</web-app> 

Ce projet est le maven: Je suis l'exécuter sur un JettyServer, tout en invoquant une URL "http://localhost:8001/project_name/rest/input/post" Mais il me donne 404 erreur. Il n'y a pas d'erreur dans la console sauf ceci. Pourquoi est-ce le cas? Comment puis-je resoudre ceci? Toute suggestion très appréciée.

Répondre

2

Regardez votre variable de chemin dans la classe Java./input se traduit par http://localhost:8001/input/post ce qui peut ne pas être ce que vous voulez.

Vous déclarez également deux fois la variable @Path dans votre fichier Java. Une fois avant la définition de la classe InputResponse et à nouveau dans la classe InputResponse elle-même.

+1

Et regardez aussi la valeur de l'url de votre appel ajax. La barre oblique est le répertoire de travail. Voici un lien qui explique les différences de chemin entre ./ et ../ http://stackoverflow.com/questions/7591240/what-does-dot-slash-refer-to-in-terms-of-an-html-file- chemin-emplacement –

+1

Voir à mon web.xml, j'ai donné url-pattern comme/rest/*, et la même chose dans son ensemble fonctionne très bien pour moi avec une requête GET ajax @ lawrence thorne – tpsaitwal