Javascriptを使った最もシンプルなSOAPの例を教えてください。
できるだけ便利なように、答えはこうでなければなりません。
**これは、Webサービスがページと同じドメインにない限り、ストレートなJavaScriptでは実行できません。
ウェブサービスが別のドメインにあり[IE<10をサポートする必要がある]場合は、結果を取得して返す独自ドメインのプロキシページを使用する必要があります。 古いIEをサポートする必要がない場合は、サービスにCORSサポートを追加する必要があります。いずれの場合も、結果を自分で解析する必要がないように、timyates氏が提案したlibのようなものを使用する必要があります。
ウェブサービスが独自のドメインにある場合は、SOAPを使用しないでください。そうしなければならない理由はありません。 ウェブサービスが独自のドメインにある場合は、JSONを返せるように変更して、SOAPに付随するすべての煩わしさに対処する手間を省いてください。
簡単な答えはjavascriptからSOAPリクエストをしないでください。 他のドメインからデータを要求するにはウェブサービスを使用し、その場合はサーバーサイドで結果を解析してjsに適した形で返すようにしましょう。
トーマス。
JSONはjavascriptなので、フロントエンドでの使用に適しています。そのため、XMLを扱う必要がありません。SOAPは、このためにライブラリを使わないと大変です。誰かが言っていたSOAPClientは良いライブラリで、私たちのプロジェクトではそれを使い始めました。しかし、これにはいくつかの制限があり、大部分を書き直さなければなりませんでした。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を使ってメッセージをWebサービスのURLにPOSTする 3.Web サービスの 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ライブラリがないと、かなり面倒なことになります。