Qual è il più semplice esempio SOAP usando Javascript?
Per essere il più utile possibile, la risposta dovrebbe:
Questo non può essere fatto con JavaScript diretto a meno che il servizio web sia sullo stesso dominio della tua pagina. Modifica: Nel 2008 e in IE<10 questo non può essere fatto con JavaScript diretto a meno che il servizio sia sullo stesso dominio della tua pagina.**
Se il servizio web è su un altro dominio [e dovete supportare IE<10] allora dovrete usare una pagina proxy sul vostro dominio che recupererà i risultati e ve li restituirà. Se non avete bisogno del vecchio supporto IE allora dovete aggiungere il supporto CORS al vostro servizio. In entrambi i casi, dovresti usare qualcosa come la lib che timyates ha suggerito perché non vuoi dover analizzare i risultati da solo.
Se il servizio web è sul tuo dominio allora non usare SOAP. Non c'è una buona ragione per farlo. Se il servizio web è sul vostro dominio, allora modificatelo in modo che possa restituire JSON e risparmiatevi la fatica di avere a che fare con tutte le seccature che vengono con SOAP.
La risposta breve è: Non fare richieste SOAP da javascript. Usate un servizio web per richiedere dati da un altro dominio, e se lo fate, analizzate i risultati sul lato server e restituiteli in una forma amichevole per js.
Thomas:
JSON è preferito per l'uso front-end perché è javascript. Perciò non avete a che fare con XML. SOAP è un dolore senza usare una libreria a causa di questo. Qualcuno ha menzionato SOAPClient, che è una buona libreria, abbiamo iniziato con essa per il nostro progetto. Tuttavia aveva alcune limitazioni e abbiamo dovuto riscrivere grandi parti di essa. È stata rilasciata come SOAPjs e supporta il passaggio di oggetti complessi al server, e include alcuni esempi di codice proxy per consumare servizi da altri domini.
L'esempio più semplice consisterebbe in:
<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>
Ma è una gran seccatura senza librerie JavaScript esterne.