使用jQuery Ajax调用SOAP-XML Web服务 – 缩小实现?

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

var soapMessage = '\ \ \ \ ' + sName + '\ ' + sRadius + '\ ' + gLongitude + '\ ' + gLatitude + '\ ' + sAddress + '\ \ \ \ '; $.ajax({ type : "POST", url : service, data : soapMessage, contentType : "text/xml; charset=ansi", dataType : "xml", success : AjaxSucceededInsert, error : AjaxFailedGeneral }); 

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

SOAP协议消息格式定义了3个元素:Envelope,Header和Body。 在这三个中,Header是可选的,可以省略,另外两个是必需的( SOAP 1.1规范:4。SOAP Envelope , SOAP 1.2 Specification:5。SOAP Message Construct )。

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

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

有一个相对较新的插件可用:

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

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

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

这个插件的真正好处在于它将为您构建XML。 您提供了JSON数据结构,并且只提供了一些其他参数。 该插件构建XML,将其发送到服务,并将响应转换回JSON。