Bonjour,

J'ai 2 appels Ajax dont le second doit s'exécuter une fois le premier terminé.

Mon premier Ajax envoie la latitude et longitude de plusieurs markers que je récupèrent en bouclant dans une couche cartographique d'une carte Leaflet avec layer.eachLayer. Mon deuxième Ajax lui, appelle ma couche cartographique en WFS afin de la ré-afficher une fois les nouveaux markers reçus dans ma base de données.

Je ne peux donc pas mettre mon 2ème appel Ajax dans le success du 1er car ça rechargerait ma couche carto à chaque fois que j'envoie un marker.

Du coup, j'essaie de passer par les Deffered objects de jQuery, mais ça ne marche pas.

Voilà ce que j'ai essayé de faire :

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
var dialog_create = $('#dialog_create').dialog();
dialog_create.dialog(options, {
  buttons: {
    Add: function() {
    var defer = $.Deferred();
 
      function getAjaxDeffered(){
        layer.eachLayer(function(layer) {
          latGPS = layer.getLatLng().lat;
          lngGPS = layer.getLatLng().lng;
 
          $('#latitudeEP').val(latGPS);
          $('#longitudeEP').val(lngGPS);
 
          data = $("#formulaireEP").serialize();
 
          $.ajax({
            url: 'assets/php/create/create_EP.php',
            type: $("#formulaireEP").attr('method'),
            data: data,
            success: function() {
              dialog_create_EP.dialog("close");
              $("#formulaireEP")[0].reset();
            }
          })
        })
      }
 
      defer.resolve(getAjaxDeffered());
 
      $.when(defer).then(function(data) {
        //setTimeout(function(){
        $.ajax({
          url: owsrootUrlAssainissement + L.Util.getParamString(parametersEP),
          dataType: 'jsonp',
          jsonpCallback: 'callEP'
        }).done(EPvannes1);
        //},5000);
      });
      return false;
    },
    Cancel: function() {
      dialog_create_EP.dialog("close");
    },
  }
});
dialog_create_EP.dialog("open");