如何从特定的asp.net Web服务getelementbytagname

时间:2015-11-20 01:03:17

标签: javascript asp.net web-services cordova getelementsbytagname

请问,我在使用带有PhoneGap项目的js文件上使用getElementsByTagName命令时遇到了一个小问题。我正在使用一个完美运行的asp.net Web服务,但我没有得到Web服务返回给我的结果,那是来自string标记的<IngresarRegistroMovilResult>

这是我接收Web服务返回的函数:

function processResult() {
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
        var theXML = xmlhttp.responseXML.documentElement;
        var resultadoWebService = theXML.getElementsByTagName('string')[0].firstChild.nodeValue;

        var output = "Resultado: ";
        output += resultadoWebService;

        console.log("Pasamos por processResult, con var output:"+output);

        document.getElementById("resultadows").innerHTML = output;

    }
};

这是Web服务的规范:

POST /servicio.asmx HTTP/1.1
Host: dondeestamifamilia.masterdevelopment.co
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <IngresarRegistroMovil xmlns="http://dondeestamifamilia.masterdevelopment.co/">
      <hashString>string</hashString>
    </IngresarRegistroMovil>
  </soap12:Body>
</soap12:Envelope>

HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <IngresarRegistroMovilResponse xmlns="http://dondeestamifamilia.masterdevelopment.co/">
      <IngresarRegistroMovilResult>string</IngresarRegistroMovilResult>
    </IngresarRegistroMovilResponse>
  </soap12:Body>
</soap12:Envelope>

这是对应于IngresarRegistroMovil方法的片段,来自wsdl:

<s:element name="IngresarRegistroMovil">
    <s:complexType>
        <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="hashString" type="s:string"/>
        </s:sequence>
    </s:complexType>
</s:element>
<s:element name="IngresarRegistroMovilResponse">
    <s:complexType>
        <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="IngresarRegistroMovilResult" type="s:string"/>
        </s:sequence>
    </s:complexType>
</s:element>

我试过theXML.getElementsByTagName('string')[0].firstChild.nodeValue; 但我明白了:Uncaught TypeError: Cannot read property 'firstChild' of undefinedtheXML.getElementsByTagName('string')[0];但我得到:undefinedtheXML.getElementsByTagName('string')[0].nodeValue;但我得到:Uncaught TypeError: Cannot read property 'nodeValue' of undefined

拜托,您的大力支持对我来说非常有价值。

感谢。

2 个答案:

答案 0 :(得分:0)

标记名为IngresarRegistroMovilResult而不是string,您可以theXML.getElementsByTagName('IngresarRegistroMovilResult')[0].textContent访问该标记名(如果我没有输入拼写错误)

答案 1 :(得分:0)

使用Web服务的结果具有来自Web服务的返回变量的值。换句话说,XML.innerHTML包含C ---- O,即IngresarRegistroMovilResult的字符串值,flat,没有标记。我得到的错误是尝试通过标记名获取返回值。