通过ajax发送openlayers3事件会导致RangeError

时间:2016-06-03 09:01:35

标签: javascript jquery ajax openlayers-3

Chrome控制台中的错误是RangeError:超出最大调用堆栈大小

我使用以下代码:

   draw.on('drawend',
        function(evt) {
          var fe = evt.feature
          console.log(fe);
          var parser = new ol.format.GeoJSON();
          var features = source.getFeatures();
          var featuresGeoJSON = parser.writeFeatures(features);
          $.ajax({
                  url: "http://0.0.0.0:3000/features.json",
                  method: "POST",
                  data: fe
          }); 
        },
      this);

evt.feature对象在开发人员工具控制台中看起来不错。

1 个答案:

答案 0 :(得分:1)

确保序列化您在事件中获得的功能,而不是源代码中的功能。 $.ajax要求字符串或具有键值对的对象。因为要发送整个对象,所以必须使用JSON.stringify()来序列化对象。类似的东西:

draw.on('drawend',
    function(evt) {
      var parser = new ol.format.GeoJSON();
      var featureGeoJSON = parser.writeFeature(evt.feature);
      $.ajax({
              url: "http://0.0.0.0:3000/features.json",
              method: "POST",
              data: JSON.stringify(featureGeoJSON)
      }); 
    },
  this);