0

我正在尝试使用 OpenLayers 库发出发布请求。这是我的代码的一部分:

         OpenLayers.Request.POST({
               url: this.url,
               scope: this,
               success: this.drawChart,
               failure: function() {
               this.loadMask.hide();
               alert("No data for charts...")
                },
      data: xml2
    }); 

xml2 在哪里:

              var xml2 = this.obsformat.write({
                   eventTime: 'first',
                   resultModel: 'om:Measurement',
                   responseMode: 'inline',
                   procedure: station,
                   offering: phenom,
           observedProperties: obsprop,
                   responseFormat: this.responseFormat

                });

在 xml2 中: phenom 和 obsprop 是我从一些下拉菜单中获得的字符串变量。变量等于:

          phenom = 'Climate'
          obsprop = 'fdgf'

使用 firebug 我发现我的 POST 请求如下所示:

 <GetObservation xmlns="http://www.opengis.net/sos/1.0" version="1.0.0" service="SOS" xmlns:om="http://www.opengis.net/om/1.0" xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml" xsi:schemaLocation="http://www.opengis.net/sos/1.0 http://schemas.opengis.net/sos/1.0.0/sosGetObservation.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <offering>Climate</offering>
 <eventTime>
 <ogc:TM_During>
 <ogc:PropertyName>om:samplingTime</ogc:PropertyName>
 <gml:TimePeriod>
 <gml:beginPosition>2013-07-04T00:30</gml:beginPosition>
 <gml:endPosition>2013-07-06T00:30</gml:endPosition>
 </gml:TimePeriod>
 </ogc:TM_During>
 </eventTime>
 <observedProperty>f</observedProperty>
 <observedProperty>d</observedProperty>
 <observedProperty>g</observedProperty>
 <observedProperty>f</observedProperty>
 <responseFormat>text/xml;subtype="OM/1.0.0"</responseFormat>
 <resultModel>om:Measurement</resultModel>
 <responseMode>inline</responseMode>
 </GetObservation>

由于某种原因,变量“obsprop”不是存储在一个xml元素中,而是被解析为许多不同的元素(见上文)。其他变量不会发生这种情况,它们也是字符串类型。

有人可以帮我吗?它一定很简单,但我不知道是什么。

我希望我的问题很清楚。如果我必须更好地解释一些事情,请告诉我。

非常感谢迪米特里斯

4

1 回答 1

0

我发现在xml2中,值observedProperties必须是一个对象。我分配的(obsprop)是一个字符串。

通过在对象中分配字符串,它可以完美地工作:

ObservProp = {obsProp:obsprop}; // assign the string obsprop to a key

var xml2 = this.obsformat.write({
    eventTime: 'first',
    resultModel: 'om:Measurement',
    responseMode: 'inline',
    procedure: station,
    offering: phenom,
    observedProperties: ObservProp, // this is an object now
    responseFormat: this.responseFormat

});
于 2013-09-03T12:19:13.277 回答