使用 jQuery Ajax 调用 SOAP-XML Web Services - 缩小的实现



我正在使用以下直接的jQuery实现

    var soapMessage = '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body xmlns:ns1="http://site.com/">
        <ns1:insertLocationElement>
            <ns1:location>
                <ns1:locationName>' + sName + '</ns1:locationName>
                <ns1:locRadius>' + sRadius + '</ns1:locRadius>
                <ns1:lngGPS>' + gLongitude + '</ns1:lngGPS>
                <ns1:latGPS>' + gLatitude + '</ns1:latGPS>
                <ns1:locationAddress>' + sAddress + '</ns1:locationAddress>
            </ns1:location>
        </ns1:insertLocationElement>
    </soap:Body>
</soap:Envelope>';
    $.ajax({
        type : "POST",
        url : service,
        data : soapMessage,
        contentType : "text/xml; charset=ansi",
        dataType : "xml",
        success : AjaxSucceededInsert,
        error : AjaxFailedGeneral
    });

我想知道 - 有没有其他方法可以调用这样的 Web 服务,而不包括整个 SOAP 信封? 它使代码完全不干净 IMO。

SOAP 协议消息格式定义了 3 个元素:信封、标头和正文。在这三者中,标头是可选的,可以省略,另外两个是必需的(SOAP 1.1 规范:4.SOAP 信封,SOAP 1.2 规范:5.SOAP 消息构造(。

因此,您无法完全摆脱信封元素,因为它是 SOAP 协议消息格式所要求的。但是,您可以使用一些现成的库,这些库可以隐式为您准备消息,这样您就不必处理它。它还允许您将 SOAP 消息构造代码保存在您看不到它的某个深处。它肯定会使您的代码更清晰。

快速谷歌搜索告诉我们,我们有一个名为jqSOAPClient的jQuery插件,但不幸的是,jQuery插件网站目前处于离线状态。另一种选择是JavaScript SOAP Client。

有一个

相对较新的插件可用:

http://plugins.jquery.com/soap/

分叉了项目,并一直在进行一些修改(该插件没有处理我正在使用的服务(。我希望在某个时候合并我的更新,但很乐意得到任何反馈。

https://github.com/zachofalltrades/jquery.soap

这个插件的真正好处是它将为您构建XML。您提供 JSON 数据结构,以及几个其他参数。插件构建 XML,将其发送到服务,并将响应转换回 JSON。

最新更新