【问题标题】:Consuming SOAP WebService with JavaScript使用 JavaScript 使用 SOAP WebService
【发布时间】:2012-09-14 14:40:08
【问题描述】:

我正在尝试使用 JavaScript 使用 SOAP (.net) WebService,但 responseText 和 responseXML 为空。我尝试在另一个浏览器(chrome、firefox、IE)中运行,但这并没有解决它。

function MButton1Click(event) {
    sendDataAsXML_SOAP();
}


function sendDataAsXML_SOAP() {
    var req_params = "",
        url = "",
        number = 0,
        type = "";
    /* Configure Parameters */
    url = "http://wp.art.br/FriendNet/Principal.asmx";
    var user = document.getElementById("MTextArea1").value;
    var ajaxRequest;
    req_params = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
    req_params = req_params + "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-       instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"   xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">";
    req_params = req_params + "  <soap:Body>";
    req_params = req_params + "    <TesteDeTexto xmlns=\"http://tempuri.org/\">";
    req_params = req_params + "      <pTexto>" + user + "</pTexto>";
    req_params = req_params + "    </TesteDeTexto>";
    req_params = req_params + "  </soap:Body>";
    req_params = req_params + "</soap:Envelope>";
    /* Send XML/SOAP Request To Web Service Using Browser's Javascript DOM */
    var xmlHTTP;
    if (window.XMLHttpRequest) {
        xmlHTTP = new window.XMLHttpRequest; //For browsers other than ie
    } else {
        try {
            xmlHTTP = new ActiveXObject("MSXML2.XMLHTTP.3.0"); //for ie
        } catch (ex) {}
    }
    xmlHTTP.open("POST", url, true);
    xmlHTTP.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    xmlHTTP.setRequestHeader("SOAPAction", "http://tempuri.org/TesteDeTexto");
    xmlHTTP.onreadystatechange = receiveXML_SOAPData;
    xmlHTTP.send(req_params);
}

function receiveXML_SOAPData() {
    if (ajax_request.readyState == 4) {
        if (ajax_request.status == 200 || ajax_request.status == 0) {
            /* Parse The Response Data */
            alert(ajax_request.responseText);
            alert(ajax_request.responseXML);
            alert("sucesso");
        }
    }
}

【问题讨论】:

    标签: javascript web-services soap


    【解决方案1】:

    您尝试在receiveXML_SOAPData 函数中使用ajax_request,即undefined。你应该得到一个例外,检查你的错误控制台。

    sendDataAsXML_SOAP 函数中的 ajaxrequest 变量 a) 未使用并且 b) 是该函数的局部变量 - 它不起作用。

    receiveXML_SOAPData 函数中使用this 关键字来引用XHR 对象。

    【讨论】:

    • 但 receiveXML_SOAPData 中的 ajax_request 有效。如果我这样做: function receiveXML_SOAPData() { alert(ajax_request.readyState) if (ajax_request.readyState == 4) { if (ajax_request.status == 200 || ajax_request.status == 0) { /* 解析响应数据 * /警报(ajax_request.responseText);警报(ajax_request.responseXML);警报(“成功”); } } 然后警报 4
    • 不太可能。你真的在你的问题中发布了完整的代码吗?无论如何:如果响应是null,您是否尝试进行跨域请求?
    • 啊,现在我理解了你并将变量 ajax_request 实例化为全局变量。当我打印 ajax_request 时,打印“HTTPRequest Object”,当我打印 responseText 时,打印“”,当我打印 responseXML 时,打印“null”
    • 为什么 ajax_request.responseXML = null 而 ajax_request.responseText = " "?
    • responseXML 是 null,因为 responseText 不是有效的 XML 字符串。为什么 responseText 只是一个空格,我不知道 - 你能确认服务器发送了其他内容吗?
    猜你喜欢
    • 1970-01-01
    • 2016-11-20
    • 1970-01-01
    • 1970-01-01
    • 2019-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多