1

次の簡単なjQuery実装を使用しています

    var soapMessage = '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">\
    <soap:Body xmlns:ns1="http://site.com/">\
        <ns1:insertLocationElement>\
            <ns1:location>\
                <ns1:locationName>' + sName + '</ns1:locationName>\
                <ns1:locRadius>' + sRadius + '</ns1:locRadius>\
                <ns1:lngGPS>' + gLongitude + '</ns1:lngGPS>\
                <ns1:latGPS>' + gLatitude + '</ns1:latGPS>\
                <ns1:locationAddress>' + sAddress + '</ns1:locationAddress>\
            </ns1:location>\
        </ns1:insertLocationElement>\
    </soap:Body>\
</soap:Envelope>';

    $.ajax({
        type : "POST",
        url : service,
        data : soapMessage,
        contentType : "text/xml; charset=ansi",
        dataType : "xml",
        success : AjaxSucceededInsert,
        error : AjaxFailedGeneral
    });

SOAPエンベロープ全体を含めずに、そのようなWebサービスを呼び出す他の方法はありますか? それはコードを完全に汚れた IMO にします。

4

2 に答える 2

1

比較的新しいプラグインが利用可能です:

http://plugins.jquery.com/soap/

私はプロジェクトをフォークし、いくつかの変更に取り組んでいます (プラグインは私が取り組んでいたサービスを処理しませんでした)。いつかアップデートを統合したいと思っていますが、フィードバックをいただければ幸いです。

https://github.com/zachofalltrades/jquery.soap

このプラグインの本当に素晴らしい点は、XML を作成してくれることです。JSON データ構造と、いくつかの追加パラメーターを指定します。プラグインは XML を構築し、それをサービスに送信して、応答を JSON に変換します。

于 2013-03-22T20:47:21.383 に答える
1

SOAP プロトコルのメッセージ形式は、エンベロープ、ヘッダー、およびボディの 3 つの要素を定義します。3 つのうち、ヘッダーはオプションで省略可能です。他の 2 つは必須です ( SOAP 1.1 仕様: 4. SOAP エンベロープSOAP 1.2 仕様: 5. SOAP メッセージ コンストラクト)。

したがって、SOAP プロトコルのメッセージ形式で必要とされる Envelope 要素を完全に取り除くことはできません。しかし、メッセージを処理する必要がないように、暗黙的にメッセージを準備できる既製のライブラリを使用できます。また、SOAP メッセージ構築コードを見えない深い場所に保持することもできます。そして、それは間違いなくあなたのコードをよりきれいにします。

簡単にグーグル検索すると、 jqSOAPClientという名前の jQuery プラグインが利用可能であることがわかりますが、残念ながら、jQuery プラグインの Web サイトは現在オフラインになっています。他の代替手段はJavaScript SOAP Clientです。

于 2012-05-21T12:27:59.337 に答える