首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

怎么获取responseText中的result值

2013-04-02 
如何获取responseText中的result值?用异步方式,获得webservice的一个返回值,responseText是一段XML,无法将

如何获取responseText中的result值?
用异步方式,获得webservice的一个返回值,responseText是一段XML,无法将其中结果getNumResult提取出赋值给textbox.innerText,请问各位大虾该如何处理?

返回的responseText:


<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope 
xmlns:soap="http://www.w3.org/2003/05/soap-envelope" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema">

    <soap:Body>
        <getNumResponse xmlns="http://tempuri.org/">
            <getNumResult>1748</getNumResult>
        </getNumResponse>
    </soap:Body>

</soap:Envelope>




js代码:

        function RequestWebService() {
            //这是我们在第一步中创建的Web服务的地址
            var URL = "http://localhost:1748/WebSite2/Service.asmx";

            //在这处我们拼接
            var data;
            data = '<?xml version="1.0" encoding="utf-8"?>';
            data = data + '<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">';
            data = data + '<soap12:Body>';
            data = data + '<getNum xmlns="http://tempuri.org/" />';
            data = data + '</soap12:Body>';
            data = data + '</soap12:Envelope>';

            //创建异步对象
            var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            xmlhttp.Open("POST", URL, false);
            xmlhttp.SetRequestHeader("Content-Type", "application/soap+xml");
            xmlhttp.Send(data);
            var str = xmlhttp.responseText;

            // 下面这句返回的是一段XML,而不是想要的getNumResult节点的值
            document.getElementById("Text1").innerText = str;

            // 下面写会找不到该节点
            var xmlDoc = xmlhttp.responseXML
            var str2 = xmlDoc.selectSingleNode("Envelope\Body\getNumResponse\getNumResult").text;

            alert(str2);



            // ....请问前辈们应该如何写







[解决办法]
看了找了半天,告诉你吧

是nodeValue,text和value在火狐和chrome是有效的,IE无效

最好的做法是js中设置断点(IE中需要启用调试的),然后可以看到它支持的属性和对应的值了

<html>
<head>
<script type="text/javascript" src="/example/xdom/loadxmldoc.js"></script>
</head>
<body>

<script type="text/javascript">
xmlDoc=loadXMLDoc("/example/xdom/books.xml");

x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];
x.nodeValue="Easy Cooking";

x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];
txt=x.nodeValue;
document.write(txt);
</script>
</body>
</html>

[解决办法]
回调事件应该写在onreadystatechange里面吧

热点排行