使用Javascript的最简单的SOAP例子是什么?
为了尽可能的有用,答案应该是。
**这不能直接用JavaScript完成,除非网络服务与你的页面在同一个域。 编辑:在2008年和IE<10中,这不能直接用JavaScript完成,除非该服务与你的页面在同一个域。
如果网络服务在另一个域名上[并且你必须支持IE<10],那么你将不得不在你自己的域名上使用一个代理页面,它将检索结果并返回给你。 如果你不需要旧的IE支持,那么你需要在你的服务中添加CORS支持。无论哪种情况,你都应该使用像 timyates 建议的 lib 那样的东西,因为你不希望自己去解析结果。
如果网络服务是在你自己的域上,那么就不要使用SOAP。没有充分的理由这样做。 如果网络服务是在你自己的域名上,那么就修改它,使其能够返回JSON,并为自己省去处理SOAP带来的所有麻烦。
简短的回答是。不要在javascript中进行SOAP请求。 使用网络服务来请求另一个领域的数据,如果你这样做了,就在服务器端解析结果,并以js友好的形式返回。
托马斯:
前端使用的JSON是首选,因为它是javascript。因此,你没有XML需要处理。因为这个原因,如果不使用一个库,SOAP就很麻烦。有人提到SOAPClient,它是一个很好的库,我们的项目开始使用它。然而,它有一些限制,我们不得不重写它的大块内容。它已经作为SOAPjs发布,支持向服务器传递复杂的对象,并包括一些代理代码样本,以消费其他领域的服务。
最简单的例子包括:。
0.获得用户输入。 1.编写类似这样的XML SOAP消息
<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/">
<soap:Body>
<GetInfoByZIP xmlns="http://www.webserviceX.NET">
<USZip>string</USZip>
</GetInfoByZIP>
</soap:Body>
</soap:Envelope>
2.使用XHR将消息发布到网络服务的网址上 3.解析网络服务的XML SOAP响应,类似于此
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<GetInfoByZIPResponse xmlns="http://www.webserviceX.NET">
<GetInfoByZIPResult>
<NewDataSet xmlns="">
<Table>
<CITY>...</CITY>
<STATE>...</STATE>
<ZIP>...</ZIP>
<AREA_CODE>...</AREA_CODE>
<TIME_ZONE>...</TIME_ZONE>
</Table>
</NewDataSet>
</GetInfoByZIPResult>
</GetInfoByZIPResponse>
</soap:Body>
</soap:Envelope>
4.将结果呈现给用户。
但如果没有外部的JavaScript库,就会有很多麻烦。