通过 ajax 发送 openlayers3 事件导致 RangeError

sending openlayers3 event over ajax results in RangeError

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 对象在开发人员工具控制台中看起来正常。

确保您正在序列化您在事件中获得的功能,而不是来自源的功能。并且 $.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);