插件 jQuery.Soap 中文API文档
插件 jQuery.Soap 中文API文档 https://github.com/doedje/jquery.soap
源码 & 下载
- Github地址:address
- 源码下载: -
- 效果演示: -
适用场景
此脚本使用$ .ajax发送SOAP:Envelope。它可以将XML DOM,XML字符串或JSON作为输入,并且响应也可以作为XML DOM,XML字符串或JSON返回。
插件特点
jQuery Soap
file: jquery.soap.js
version: 1.7.3
用于使用SOAP与Web服务进行通信的jQuery插件。
此脚本使用$ .ajax发送SOAPEnvelope。它可以将XML DOM,XML字符串或JSON作为输入,并且响应也可以作为XML DOM,XML字符串或JSON返回。
给所有贡献$ .soap的人们带来了巨大的威力!
Let’s $.soap()!
注意:有关问题,错误,问题或以下任何其他问题,请参阅我的说明。我真的更喜欢你在github上使用问题跟踪器而不是发送邮件….
基本用法
$.soap({
url: 'http://my.server.com/soapservices/',
method: 'helloWorld',
data: {
name: 'Remy Blom',
msg: 'Hi!'
},
success: function (soapResponse) {
// do stuff with soapResponse
// if you want to have the response as JSON use soapResponse.toJSON();
// or soapResponse.toString() to get XML string
// or soapResponse.toXML() to get XML DOM
},
error: function (SOAPResponse) {
// show error
}
});
会导致
$.soap({
url: 'http://my.server.com/soapservices/',
method: 'helloWorld',
data: {
name: 'Remy Blom',
msg: 'Hi!'
},
success: function (soapResponse) {
// do stuff with soapResponse
// if you want to have the response as JSON use soapResponse.toJSON();
// or soapResponse.toString() to get XML string
// or soapResponse.toXML() to get XML DOM
},
error: function (SOAPResponse) {
// show error
}
});
这将发送到:url +方法 http://my.server.com/soapservices/helloWorld
依赖
jQuery - 任何版本1.9或更高版本都可以正常工作,可以回到v1.6
该函数 SOAPResponse.toJSON()
取决于任何第三方jQuery.xml2json插件
以前bower.json提到了由XTREEM发布的fyneworks中的一个作为依赖项但由于它将jquery 1.11作为依赖项而被删除,因此不能用于jquery 的1.9,1.10或2.x版本。
从版本1.6.7开始,当您希望使用该SOAPResponse.toJSON函数时,必须手动安装任何第三方jQuery.xml2json插件,如下面的列表中所示:
- sparkbuzz / jQuery-xml2json
- fyneworks
请记住,更改正在使用的插件可能会破坏已经使用的现有代码,SOAPResonse.toJSON因为所有插件都会创建具有不同结构的对象!
Promise
从版本1.3.0开始,$.soap()返回实现Promise接口的jqXHR对象。这允许您使用.done()
,.fail()
,.always()
等于是代替使用success
和error
选项,你也可以这样做:
$.soap({
...
}).done(function(data, textStatus, jqXHR) {
// do stuff on success here...
}).fail(function(jqXHR, textStatus, errorThrown) {
// do stuff on error here...
})
优点是这些promise回调可以让你直接访问$.ajax
而不是$.soap
的SOAPResponse对象提供的原始参数。
globalConfig
从版本0.9.3开始,可以调用$ .soap来设置额外的配置值。当您对$.soap
进行大量调用并且厌倦了为url,namespace和error重复相同的值时,这种新方法可以派上用场:
$.soap({
url: 'http://my.server.com/soapservices/',
namespaceQualifier: 'myns',
namespaceURL: 'urn://service.my.server.com',
error: function (soapResponse) {
// show error
}
});
$.soap({
method: 'helloWorld',
data: {
name: 'Remy Blom',
msg: 'Hi!'
},
success: function (soapResponse) {
// do stuff with soapResponse
}
});
上面的代码与第一个示例完全相同,但是当您想要对同一个soapserver进行另一次调用时,您只需要指定更改的值:
$.soap({
method: 'doSomethingElse',
data: {...},
success: function (soapResponse) {
// do stuff with soapResponse
}
});
但它不会阻止你调用一个完全不同的soapserver与不同的错误处理程序,例如:
$.soap({
url: 'http://another.server.com/anotherService'
method: 'helloWorld',
data: {
name: 'Remy Blom',
msg: 'Hi!'
},
success: function (soapResponse) {
// do stuff with soapResponse
},
error: function (soapResponse) {
alert('that other server might be down...')
}
});
注意:data参数用作密钥。如果在传递给$ .soap的选项中没有指定数据,则所有选项都存储在globalConfig中,将不会创建SOAPEnvelope,也不会发送任何内容。当指定方法时,将使用globalConfig,并且传递给$ .soap的所有选项都将覆盖globalConfig中的那些选项,但请记住,它们不会被覆盖!
WS-Security的
从版本1.1.0开始,jQuery.soap支持一种非常基本的WSS形式。请求此功能(问题#9)并且相当容易实现,但我没有办法正确测试它。所以如果你遇到问题,请告诉我(见下文)
$.soap({
// other parameters..
// WS-Security
wss: {
username: 'user',
password: 'pass',
nonce: 'w08370jf7340qephufqp3r4',
created: new Date().getTime()
}
});
HTTP基本授权
使用HTTPHeaders选项,实现HTTP基本授权相对简单,如下所示:
var username = 'foo';
var password = 'bar';
$.soap({
// other parameters...
HTTPHeaders: {
Authorization: 'Basic ' + btoa(username + ':' + password)
}
});
同源政策
由于同源策略,您将无法在 http://www.example.com
上有一个页面执行ajax调用($.soap
在内部使用$.ajax
)到 http://www.anotherdomain.com
。
要解决此问题,您应该在 http://www.example.com
上使用某种代理或使用CORS。
请注意,它也不允许从 http://www.example.com
转到 http://soap.example.com
甚至是 http://www.example.com:8080
基本上,当您无法使用相对URL调用webService时,您将不得不采取措施绕过相同的源策略,以下是一些帮助您的链接:
http://stackoverflow.com/questions/3076414/ways-to-circumvent-the-same-origin-policy
如果您可以完全控制从html服务的apache或nginx服务器,则设置代理的最简单方法是使用其反向代理功能:
-
Setting up a reverse proxy in apache
-
Setting up a reverse proxy in nginx
当你因为在之前的链接中使用lmgtfy.com而感到不安时,我深表歉意,我只是喜欢那个网站!;)