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

AngularJS Discussion :

Mon script ne retourne que la dernière valeur des infos censées être transmises


Sujet :

AngularJS

Vue hybride

Bonop Mon script ne retourne que la... 07/04/2016, 17h50
sekaijin tu peux pas utiliser le... 09/04/2016, 13h18
Bonop Bonsoir, je ne connaissais... 11/04/2016, 01h23
Invité Il n'y aurait pas un moyen de... 11/04/2016, 01h35
Bonop Dans le cas présent non, je... 11/04/2016, 09h11
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 34
    Par défaut Mon script ne retourne que la dernière valeur des infos censées être transmises
    Bonsoir, à nouveau moi !

    J'ai essayé une seconde méthode pour consommer mes webService SOAP. J'ai utilisé la librairie soapclient.js et angular.soap.js

    En suivant un tuto relativement simple, j'ai réussi à appelé mon fichier WSDL et a utiliser ma fonction déclarée dans celle ci (voir script JS ci dessous).

    Au vu du chargement de la page, mon script charge toutes les données mais ne m'envoie uniquement le dernier row d'un supposé résultat de 20 rows.

    Je précise, mon webService SOAP fonctionne bien (testé par SOAPUI). De même, avec un console.log dans mon controller, il s'avère que mon navigateur ne charge que le dernier object.

    Je pense que cela vient de ma factory ? ou alors cela n'est pas sensé me retourné plusieurs rows...

    Html :
    http://pastebin.com/bMCbu6Rq

    Script angularJS :
    http://pastebin.com/zJfGwFx7


    Auriez-vous une piste pour résoudre ce soucis ? Je me trompe peut être à un endroit qui va vous paraître flagrant.


    Merci d'avoir pris le temps de me lire,

    Bonop

  2. #2
    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
    tu peux pas utiliser le bbcode [CODE]?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 34
    Par défaut
    Bonsoir,

    je ne connaissais pas, effectivement ça simplifie l'affichage :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <!DOCTYPE html>
    <html lang="fr" ng-app="myApp">
     
        <head>
            <meta charset="utf-8" />
            <title>Route App</title>        
     
    <!-- Les scripts sont bien appelés une fois le lancement de la Servlet -->
            <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.min.js"></script>
            <script src="js/controlerNavigation.js"></script>
            <script src="js/angular.js"></script>
            <script src="js/soapclient.js"></script>
            <script src="js/angular.soap.js"></script>
            <link rel="stylesheet" href="css/bootstrap.css">
            <link rel="stylesheet" href="css/style.css">
    <!--         <link rel="stylesheet" href="css/style.css"> -->
     
     
        </head>
     
        <body>    
            <div ng-controller="MainCtrl">     
                <table class="table" id="table">
                    <thead>
                        <tr class="ligneTab">                      
                            <th>Nom</th>                               
                        </tr>
                    </thead>
     
                    <tbody>                                            
                        <tr ng-repeat="data in myData">
                            <td>{{data.item}}</td>                     
                        </tr>                              
                    </tbody>
     
                </table>
                            <hr>
     
            </div> 
        </body>
    </html>
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    angular.module('angularSoap', [])
     
    .factory("$soap",['$q',function($q){
        return {
            post: function(url, action, params){
                var deferred = $q.defer();
     
                //Create SOAPClientParameters
                var soapParams = new SOAPClientParameters();
                for(var param in params){
                    soapParams.add(param, params[param]);
                }
     
                //Create Callback
                var soapCallback = function(e){
                    if(e.constructor.toString().indexOf("function Error()") != -1){
                        deferred.reject("An error has occurred.");
                    } else {
                        deferred.resolve(e);
                    }
                }
     
                SOAPClient.invoke(url, action, soapParams, true, soapCallback);
     
                return deferred.promise;
            }
        }
    }]);
     
     
     
    angular.module('myApp', ['angularSoap'])
     
    .factory("testService", ['$soap',function($soap){
        var base_url = "http://localhost/ws_ldap/InputServer.php";
     
        return {
            getExternalI: function(){
                return $soap.post(base_url, "getExternalI");           
            }
     
        }
    }])
     
    .controller('MainCtrl', function($scope, testService) {
     
      testService.getExternalI().then(function(response){
     
        $scope.myData = response;
        console.log(response);
      });
     
    })

    Désolé d'avoir pris autant de temps à répondre, je n'ai pas eu internet du week-ends

    Bonne soirée!

  4. #4
    Invité
    Invité(e)
    Par défaut
    mon webService SOAP fonctionne bien (testé par SOAPUI)
    Il n'y aurait pas un moyen de voir le format du JSON que ça génère (Avant le résultat de console.log) ? Est-il possible d'afficher quelque chose dans ton navigateur, en appelant directement la fonction dans le fichier PHP, dans la case url du navigateur ?

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 34
    Par défaut
    Dans le cas présent non, je récupère un fichier XML. Cependant, en ayant ce service avec ma factory, il m'en ressort le dernier row. Tout en sachant que angularJS ne lis que du JSON, est ce qu'il considère le dernier item de mon XML comme un object JSON pour l'afficher correctement ? Auquel cas je perds mon temps et je devrais le parser avant de vouloir l'afficher

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 34
    Par défaut
    J'y ai ajouté XML2JSON en script pour parser ma réponse XML.

    Dans mon controller, j'essaye d'adapter cela mais je ne suis pas un habitué du JS, j'en ai fais très peu. Ce qui en ressort :

    J'attribue ma réponse XML à la variable xmlData, que j'appelle ensuite avec $http.get pour le parser en JSON. Mais visiblement, j'ai une erreur :
    " GET http://localhost/soapClient/xmlData 404 NotFound"

    Pourtant mon fichier WSDL charge bien, de même que mon service renvoie bien la réponse sous forme xml en tout dernier.

    Vous auriez une piste ?

    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
     
    .controller('MainCtrl', function ($scope, testService, $http) {
     
    	var xmlData = testService.getExternalI();
    			$http.get("xmlData",
    							{	
    	                        transformResponse: function (cnv) {
                                var x2js = new X2JS();
                                var aftCnv = x2js.xml_str2json(cnv);
                                return aftCnv;
    							}
     
    			})
    			.then(function (response){
    				console.log(response);
    				$scope.myData = response;
    			});
    });


    Voici un exemple à part de l'utilisation d'xml2json qui fonctionne :

    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
            var app = angular.module('httpApp', []);
            app.controller('httpController', function ($scope, $http) {
                $http.get("Sitemap3.xml",
                        {
                            transformResponse: function (cnv) {
                                var x2js = new X2JS();
                                var aftCnv = x2js.xml_str2json(cnv);
                                return aftCnv;
                            }
                        })
                .then(function (response) {
                    console.log(response);
    				$scope.myData = response.data;
                });
            });

Discussions similaires

  1. [2.x] count symfony2 ma boucle n'affiche que la dernière valeur
    Par Medidev dans le forum Symfony
    Réponses: 1
    Dernier message: 31/03/2014, 17h33
  2. [RegEx] Mon regex ne retourne que le premier et dernier match
    Par Babas007 dans le forum Langage
    Réponses: 15
    Dernier message: 12/11/2013, 15h16
  3. [RegEx] Capture multiple : ne renvoie que la dernière valeur
    Par Maelikk dans le forum Langage
    Réponses: 3
    Dernier message: 01/07/2012, 19h41
  4. [Oracle] PHP ne retourne que la dernière ligne d'un resultat d'une procedure stockée ORACLE
    Par tytous dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 08/06/2010, 07h57
  5. Ne retourner que la "meilleure" valeur pour chaque jour
    Par Drakkhen dans le forum Langage SQL
    Réponses: 6
    Dernier message: 27/03/2009, 17h03

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