Wat is het eenvoudigste SOAP-voorbeeld met behulp van Javascript?
Om zo bruikbaar mogelijk te zijn, moet het antwoord:
Dit kan niet gedaan worden met gewone JavaScript tenzij de web service op hetzelfde domein is als je pagina. Edit: In 2008 en in IE<10 kan dit niet gedaan worden met gewone javascript tenzij de service op hetzelfde domein is als je pagina.
Als de web service op een ander domein is [en je moet IE<10 ondersteunen] dan zul je een proxy pagina op je eigen domein moeten gebruiken die de resultaten ophaalt en aan je terugstuurt. Als je geen oude IE ondersteuning nodig hebt dan moet je CORS ondersteuning toevoegen aan je service. In beide gevallen zou je iets moeten gebruiken zoals de lib die timyates voorstelde omdat je de resultaten niet zelf wilt moeten parsen.
Als de web service op je eigen domein is, gebruik dan geen SOAP. Er is geen goede reden om dat te doen. Als de web service op je eigen domein is, pas het dan aan zodat het JSON kan teruggeven en bespaar jezelf de moeite van het omgaan met al het gedoe dat komt met SOAP.
Het korte antwoord is: Doe geen SOAP verzoeken vanuit javascript. Gebruik een web service om gegevens op te vragen van een ander domein, en als je dat doet parseer dan de resultaten op de server-side en stuur ze terug in een js vriendelijke vorm.
Thomas:
JSON heeft de voorkeur voor front-end gebruik omdat het javascript is. Daarom heb je geen XML om mee om te gaan. SOAP is daarom lastig zonder een bibliotheek te gebruiken. Iemand noemde SOAPClient, wat een goede library is, we zijn er mee begonnen voor ons project. Het had echter enkele beperkingen en we moesten grote stukken herschrijven. Het is uitgebracht als SOAPjs en ondersteunt het doorgeven van complexe objecten aan de server, en bevat enkele voorbeeld proxy code om diensten van andere domeinen te consumeren.
Simpelste voorbeeld zou bestaan uit:
<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>
Maar het is een hoop gedoe zonder externe JavaScript bibliotheken.