IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ext JS / Sencha Discussion :

Communication entre fichier js et une servlet Java via Ajax


Sujet :

Ext JS / Sencha

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2013
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 3
    Par défaut Communication entre fichier js et une servlet Java via Ajax
    Bonjour,
    Je suis encore débutante en JavaSript et Ajax. Je suis plantée il y'a une dizaine de jours et j'arrive pas a diagnostiquer ou est le problème. Pourriez-vous m'aider svp? Je serais très reconnaissante.
    Lorsque j’exécute le fichier js, j'obtient toujours un message d'erreur. J'arrive pas d'identifier d'ou provient cette erreur.
    Ci-dessous un extrait de code de mon fichier JavaScript:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     execute: function(){
        	 //appel de servlet
     
     
           Ext.Ajax.request({
                url: ORYX.CONFIG.ROOT_PATH + "ProgServlet",
                method: 'POST',
                success: function(request){
        	   		try{
        	   		Ext.Msg.alert(request);
     
        	   		}catch(e){
        	   			Ext.Msg.alert("Rendering Failed :\n"+e);
        	   		}
                    Ext.Msg.hide();
                }.createDelegate(this),
                failure: function(){
                    Ext.Msg.alert("Error", Error.Mesage);
                }
     
            });
    Ci-dessous un extrait de code de ma Servlet:

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		// TODO Auto-generated method stub
     
    		//appeler Prog.java
    		Prog m=new Prog();
    		m.main();
     
    		resp.getWriter().write("The File is ready");
    		}

  2. #2
    Membre émérite
    Avatar de dkmix
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    619
    Détails du profil
    Informations personnelles :
    Localisation : Jamaïque

    Informations forums :
    Inscription : Septembre 2007
    Messages : 619
    Par défaut
    Bonjour,

    Quel est le message d'erreur ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2013
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 3
    Par défaut
    Bonjour,
    une fenêtre s'affiche toujours nommée "Error" sans indiquer le type d'erreurs.

  4. #4
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    ton problème est que tu utilise un objet comme une chaine
    e tout comme en java est un objet une instance de la classe exception
    donc afficher e ne fera qu'afficher l'objet

    je ne sais pas quel navigateur tu utilise mais je te donne la marche à suivre avec chrome:
    ouvre ta page
    avec un clic droit choisit dans le menu "inspecter l'élément"
    dans le cadre qui c'est ouvert mets toi sur "network"
    dans ta page déclanche l'envoie de ton POST
    tu va voir apparaitre "ProgServlet" dans la liste
    clique dessus
    dans la partie droite tu a Headers, Preview, Response, Cookies
    Clique sur Headers tu vois ta requête et la réponse du serveur.

    1) tu dois avoir un code réponse "200 OK" si ce n'est pas le cas il te faut mettre au point ta servlet en postant depuis un simple navigateur (pas d'ajax) car tant que le dialogue http n'est pas OK le code Ajax passera dans failure: function(){.

    2) si la réponse est 200 OK clique sur "Response" tu vois son contenu vérifie que c'est bien ce que tu attends
    ton code Ajax est erroné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Ext.Ajax.request({
                url: ORYX.CONFIG.ROOT_PATH + "ProgServlet",
                method: 'POST',
                scope: this, //on fixe l'objet qui sera utilisé lors des callbacks
                success: function(response, , request){ //Ici la méthode prend une reponse en premier argument pas une request
        	   		try{
    //response est un objet qui contient plusieur membres
    //response.responseText contient le texte de la réponse
    //response.responseXML contient si la réponse est du XML un DOM correspondant.
    //response.responseHeaders contient les headers
    //request.scope est l'objet sur lequel appliquer les traitements (passé dans socpe: ci dessus
        	   		Ext.Msg.alert(response.responseText);
     
        	   		}catch(e){
        	   			Ext.Msg.alert("Rendering Failed :\n"+e.message);
    //tout comme en java e est une exception et le message est contenu dans le champ message
        	   		}
                    Ext.Msg.hide();
                }, // Pas de .createDelegate(this) ici
                failure: function(response, request){//Ici la méthode prend une reponse et une request pour arguments
                    Ext.Msg.alert("Error", response.status);
                }
     
            });

    dans l'inspecteur de chrome tu as un éléments "Script" ou "Sources"
    choisi le script contenant ton code Ajax et mets un point d'arrêt devant Ext.Msg.alert en cliquant sur le numero de ligne

    lorsque tu vas lancer ton appel ajax le débuggeur vas s'arrêter sur ces points d'arrêts à droite "Scope Variables" te montre tous les membres de tous les objet connus à ce point d'arrêt.


    souvent dans Ext les handlers ne sont pas très bien définis la doc précise juste qu'on peut mettre une fonction à activer sans bien préciser les paramètres de cette fonction.
    en général je met function(a, b, c, d, e, f, g, h) {... et je place un point d'arrêt. je vois alors tous les paramètres qui sont transmis je détermine en fonction de leur type et leur valeur leur nature, j'élimine tous les derniers qui sont à null, et je renomme les autres. ça permets d'être sur de ce qu'il est passé et ne l'est pas.




    A+JYT

Discussions similaires

  1. Passer un tableau en javascript à une servlet Java via Ajax
    Par princejava dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 06/05/2014, 12h49
  2. Réponses: 1
    Dernier message: 22/06/2012, 09h01
  3. Télécharger un fichier généré par une servlet Java
    Par El Saigneur dans le forum Flex
    Réponses: 7
    Dernier message: 31/07/2009, 09h27
  4. [Tomcat]Droit d'accès aux fichiers créés par une servlet
    Par loulouleboss dans le forum Tomcat et TomEE
    Réponses: 7
    Dernier message: 15/07/2004, 14h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo