Javascript kullanan en basit SOAP örneği nedir?
Mümkün olduğunca faydalı olması için, cevap şöyle olmalıdır:
Web hizmeti sayfanızla aynı etki alanında olmadığı sürece bu doğrudan JavaScript ile yapılamaz. Düzenleme: 2008'de ve IE<10'da, hizmet sayfanızla aynı etki alanında olmadığı sürece bu doğrudan javascript ile yapılamaz.
Web hizmeti başka bir etki alanındaysa [ve IE<10'u desteklemeniz gerekiyorsa], kendi etki alanınızda sonuçları alacak ve size geri gönderecek bir proxy sayfası kullanmanız gerekecektir. Eğer eski IE desteğine ihtiyacınız yoksa o zaman servisinize CORS desteği eklemeniz gerekir. Her iki durumda da, timyates'in önerdiği lib gibi bir şey kullanmalısınız çünkü sonuçları kendiniz ayrıştırmak zorunda kalmak istemezsiniz.
Web hizmeti kendi etki alanınızdaysa SOAP kullanmayın. Bunu yapmak için iyi bir neden yoktur. Web hizmeti kendi etki alanınızdaysa, JSON döndürebilecek şekilde değiştirin ve SOAP ile gelen tüm zorluklarla uğraşma zahmetinden kurtulun.
Kısa cevap: Javascript'ten SOAP istekleri yapmayın. Başka bir alandan veri istemek için bir web hizmeti kullanın ve bunu yaparsanız sonuçları sunucu tarafında ayrıştırın ve js dostu bir biçimde döndürün.
Thomas:
JSON, javascript olduğu için ön uç kullanımı için tercih edilir. Bu nedenle uğraşmanız gereken bir XML yoktur. SOAP, bu nedenle bir kütüphane kullanmadan bir acıdır. Birisi iyi bir kütüphane olan SOAPClient'tan bahsetti, projemiz için onunla başladık. Ancak bazı sınırlamaları vardı ve büyük bir kısmını yeniden yazmak zorunda kaldık. SOAPjs]1 olarak yayınlandı ve karmaşık nesneleri sunucuya aktarmayı destekliyor ve diğer alanlardan hizmetleri tüketmek için bazı örnek proxy kodları içeriyor.
En basit örnek şu şekilde olabilir:
<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>
Ancak harici JavaScript kütüphaneleri olmadan bu çok zahmetli bir iştir.