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

AJAX Discussion :

Pourquoi le code est-il executé deux fois sur un smartphone ?


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 167
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 167
    Par défaut Pourquoi le code est-il executé deux fois sur un smartphone ?
    Bonjour,

    Je fais une application web avec leftlet pour dessiner des polygones sur une carte.

    Quand je dessine un polygone, l'événement
    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
     
     
      app.map.on(L.Draw.Event.CREATED, function (e) {
        var type = e.layerType,
          layer = e.layer;
     
        // console.log("e.layer");
        //console.log(e);
     
        /*
        {"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-1.6040039062500002,52.09975692575725],[-2.0544433593750004,51.92733099026087],[-1.7358398437500002,51.70320428462806],[-0.9448242187500001,51.951036645095904],[-1.6040039062500002,52.09975692575725]]]}}
        */
     
        /*
        if (type === 'polygon') {
          layer.bindPopup('A polygon!');
        }
        if (type === 'rectangle') {
          layer.bindPopup('A rectangle!');
        }
        if (type === 'circle') {
          layer.bindPopup('A circle!');
        }
        */
     
        //FGfences.addLayer(layer);
     
     
        var shape = layer.toGeoJSON()
        var shape_for_db = JSON.stringify(shape);
     
     
        app.saveGeofences(app.devise_id,shape_for_db);
      });
    est appelé.

    Puis il appelle la fonction daveGeofences, pour la sauver dans une base de donnée.

    Tout se passe bien sur un ordinateur.
    Voici la fonction en question et ma question qui suit
    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
     
    app.saveGeofences = function(devise_id, data){
     
      var fense_name = prompt("Give a name", "");
     
      $.ajax({
        type: "POST",
        url: "maps/sql/saveGeofences.php",
        //data: {data:data},
        data: {devise_id:devise_id, data:data, fense_name:fense_name},
        beforeSend: beforeBeSent,
        success: result,
        error: error,
        dataType: "json"
      });
     
      function beforeBeSent(data)
      {
     
      }
      function error(data)
      {
        console.log("Error saveGeofences");
        console.log(data);
      }
     
      function result(data){
        console.log("Geofences created");
        app.getGeofences(devise_id,0,true,false);
     
      }
    }
    Sur un ordinateur, le prompt est affiché une fois. Je rentre un nom et le tout est sauvé dans ma DB.

    Par contre, sur un smartphone (j'ai essayé que sur un iPhone, je recois deux fois le prompt. Si la deuxième fois, si je le laisse vide, il y a deux nouvelles entrées dans ma base. Une avec un nom et une autre sans nom.

    J'ai essayé sur un ordinateur portable avec un ecran tactile, et ca marche bien. J'ai fais le teste de l'écran tactile, car ca fonctionne comme ceci sur un smartphone

    Pourquoil il exécute deux fois cette fonction, alors qu'il n'y a pas de boucle????

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par défaut
    Bonjour,
    difficile à dire sans pouvoir tester comme tu le fais mais je me hasarderais à dire que tu passes plusieurs fois dans ton app.map.on(L.Draw.Event.CREATED, function (e) { surement lié à la gestion via L.Draw.Event.CREATED.

Discussions similaires

  1. [QThread] Probleme lorsque le thread s'execute deux fois
    Par poulecaca dans le forum Multithreading
    Réponses: 15
    Dernier message: 30/12/2008, 18h01
  2. Button OnClick s'execute deux fois de suite
    Par ToxiZz dans le forum ASP.NET
    Réponses: 2
    Dernier message: 06/06/2007, 08h59
  3. Pourquoi mon code est plus lent que Arrays.sort
    Par alexis779 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 12/12/2006, 12h44
  4. [C# 2.0] Pourquoi le load est-il appelé plusieurs fois ?
    Par Worldofdada dans le forum ASP.NET
    Réponses: 9
    Dernier message: 14/09/2006, 08h34
  5. code qui s'execute plusieurs fois
    Par khelif dans le forum JBuilder
    Réponses: 1
    Dernier message: 10/03/2005, 21h56

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