Jquery Deferred + Ajax - PullRequest
       27

Jquery Deferred + Ajax

0 голосов
/ 20 мая 2018

Может кто-нибудь сказать мне, почему это не будет обновлять объект данных в AJAX?Если у меня есть несколько объектов в геойсоне, он имеет тенденцию сохранять только одну из записей объектов при циклическом просмотре всех объектов геоджона.Таким образом, если geojsonFeatures имеет 3 записи, 3 записи будут помещены в ajaxDeferred, но данные будут одинаковыми для всех трех записей.

данные: {id: updatedLayerGeojsonId, таблица: updatedLayerGeojsonTable, geom: updatedLayerGeojsonGeometry}

var geojsonFeatures = geojson.features;
var ajaxDeferred = [];

for(var a = 0; a < geojsonFeatures.length; a++){
updatedLayerGeojson = geojsonFeatures[a].geometry;
        updatedLayerGeojson.crs =  {
          "type": "name",
          "properties": {
            "name": "epsg:4326"
            }
         };
        updatedLayerGeojsonGeometry = JSON.stringify(updatedLayerGeojson);
        updatedLayerGeojsonId = geojsonFeatures[a].properties.gid;
        updatedLayerGeojsonTable = geojsonFeatures[a].properties.layer_table;

        ajaxDeferred.push(
            $.ajax({
                url: window.location.origin + '/csrfToken',
                success: function(response) {
                      $.ajax({
                          url: '/maplayers/saveEditedLayerRecord',
                          type:"post",
                          data: {
                            id: updatedLayerGeojsonId,
                            table: updatedLayerGeojsonTable,
                            geom: updatedLayerGeojsonGeometry
                          },
                           beforeSend: function(xhr, settings){
                              xhr.setRequestHeader('X-CSRF-Token', response._csrf);
                          },
                          success: function(data){
                            if(data){
                                numberOfEditedLayersCompleted++;
                                if(numberOfEditedLayers == numberOfEditedLayersCompleted){
                                    removeLayers();
                                    editableLayers.clearLayers();
                                    editedLayer = false;
                                    numberOfEditedLayers = 0;
                                    numberOfEditedLayersCompleted = 0;
                                }
                            }

                          },
                          cache: false
                        });
                    }
                })
        );
...