Qual é o exemplo mais simples de SOAP usando Javascript?
Para ser tão útil quanto possível, a resposta deve ser:
Isto não pode ser feito com javascript direto a menos que o serviço web esteja no mesmo domínio que a sua página. Edit: Em 2008 e no IE<10 isto não pode ser feito com javascript direto a menos que o serviço esteja no mesmo domínio que a sua página.
Se o serviço web está em outro domínio [e você tem que suportar o IE<10] então você terá que usar uma página proxy em seu próprio domínio que irá recuperar os resultados e retorná-los para você. Se você não precisa do suporte antigo do IE então você precisa adicionar o suporte CORS ao seu serviço. Em ambos os casos, você deve usar algo como a lib que a Timyates sugeriu porque você não quer ter que analisar os resultados você mesmo.
Se o serviço web está no seu próprio domínio, então não use o SOAP. Não há uma boa razão para o fazer. Se o serviço web está no seu próprio domínio, então modifique-o para que ele possa retornar JSON e poupar-se do trabalho de lidar com todos os problemas que vêm com SOAP.
A resposta curta é: Don' não faça pedidos SOAP do javascript. Use um serviço web para solicitar dados de outro domínio, e se você fizer isso, então analise os resultados no lado do servidor e os devolva de uma forma amigável ao js.
Thomas:
O JSON é preferido para uso front end porque é javascript. Portanto, você não tem que lidar com XML. SOAP é uma dor sem usar uma biblioteca por causa disso. Alguém mencionou o SOAPClient, que é uma boa biblioteca, nós começamos com ele para o nosso projeto. No entanto, tinha algumas limitações e tivemos que reescrever grandes partes dela. Ela's foi lançada como SOAPjs e suporta a passagem de objetos complexos para o servidor, e inclui alguns exemplos de código proxy para consumir serviços de outros domínios.
O exemplo mais simples consistiria em:
<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>
<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>
Mas é muita chatice sem bibliotecas externas de JavaScript.