没有来自 OpenLayers.Request.Post 的 XMLDocument

No XMLDocument from OpenLayers.Request.Post

本文关键字:Post XMLDocument Request OpenLayers      更新时间:2023-09-26

我使用异步OpenLayers POST请求并通过响应文本获取此字符串:

<?xml version="1.0" encoding="UTF-8"?>
<gml:TimePeriod xmlns:gml="http://www.opengis.net/gml">
 <gml:beginPosition>2011-10-18T15:15:00.000+02:00</gml:beginPosition>
<gml:endPosition>2014-11-23T14:45:00.000+01:00</gml:endPosition>
</gml:TimePeriod>

由于某种原因,我没有在XML文档对象中得到响应,我分别得到了一个空的XMLDocument。

到目前为止我的代码:

var request = OpenLayers.Request.POST({
                    url: "http://139.17.3.305:8080/database/sos",
                    async: true,    //is default
                    data: xmlString,
                    callback: handler   //name of triggered callback function
                });
/

/xml 回调处理程序

function handler(request) {
                     var xmlText = request.responseText;    
                     console.log(xmlText); //returns the string above
                     var xmlDoc = request.responseXML;
                     console.log(xmlDoc);   // returns the empty XMLDocument    
                    var timeArray = xmlDoc.getElementsByTagName('TimePeriod');        
                    console.log("timeArray:",timeArray);
                  }; 

创建一个 XML 文档

 function CreateXMLDocument () {
    var xmlDoc = request.responseText;
        if (window.DOMParser) {
            var parser = new DOMParser();
            xmlDoc = parser.parseFromString (xmlDoc, "text/xml");
        } else if (window.ActiveXObject) {
            xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
            xmlDoc.async = false;
            xmlDoc.loadXML (xmlDoc);
        }
        var TimeNode = xmlDoc.getElementsByTagName ("TimePeriod");
        var beginPosition = TimeNode.getAttribute ("beginPosition");
        alert ("The Timeperiod is " + beginPosition);
  }

知道如何将"TimePeriod"标签放入objekt"timeArray"中吗?为什么该请求适用于该字符串输出,而不适用于 XMLDocument?

我已经想通了!我通过更改几行代码在警报中收到了我请求的时间段。我交换了 XML 警报处理程序代码,并将 XML 回调处理程序排除在外。

/

/xml 警报处理程序

                  function handler(request) {
                    var xmlStr = request.responseText;  
                    console.log("xmlStr:",xmlStr);      
                    var parser=new DOMParser();
                    var xmlDoc=parser.parseFromString(request.responseText,"text/xml");
                    var gml = xmlDoc.getElementsByTagName("gml:beginPosition")[0].firstChild.data;  
                    console.log("gml:beginPosition", gml);
                    alert(gml);
                  };