JavaScript を使用して .net で Web サービスを呼び出す場合は、Web サービスの動作を使用する必要があります。次に説明する例は、比較的単純です
。 1. まず、<%@ WebService Language="C#" class=MyMath %>
などの Web サービスを作成します
。
システムを使用する;
System.Web.Services を使用します。
パブリック クラス MyMath {
[ウェブメソッド]
public int add(int a, int b)
{
a + b を返します。
}
[ウェブメソッド]
public intsubtract(int a, int b)
{
a - b を返します。
}
}
次に、それを公開し、最初にその wsdl を取得します。
2. まず、webbehavior.htc ファイルをダウンロードする必要があります ( http://msdn.microsoft.com/downloads/samples/internet/behaviors/library/webservice/default.aspにアクセスできます)。
それをダウンロードして Web の現在のディレクトリに置き、WebService を呼び出すページで次のように変更します。
<本文>
<div id="addservice" style="behavior:url(webservice.htc)"></div>
</body>
ここでは、div ID に意味のある名前を付け、Web サービスの動作としてスタイルを指定します。次に、WebService を呼び出すための JavaScript を記述する必要があります。
まず、JavaScript で wsdladdservice.useService(" http://localhost/services/math.asmx?WSDL", "MyMath "); を呼び出します。
id.useService(WSDLL パス、単純な命名方法) を使用します。
以前に設定した ID は addservice でしたが、クライアントが呼び出しやすくするために、MyMath という名前を付けました。 Web サービスを正しく呼び出すことができるようにするには、次のように、Web サービス呼び出しを処理する JavaScript を本体の onload イベントにすぐにロードする必要があります。
<スクリプト言語="JavaScript">
関数初期化()
{
addservice.useService(" http://localhost/services/math.asmx?WSDL","MyMath ");
</script>
<body onload="init()">
<div id="service" style="behavior:url(webservice.htc)">
</div>
</body>
上記では、Web サービスの動作を通じて、まず Web サービスを返す wsdl を取得します。次に、呼び出しの形式は次のとおりです。 iCallID = id.FriendlyName.callService([CallbackHandler,] "MethodName") 、Param1、Param2、..);
ここで、id は div に設定した ID、FridndbyName はアスペクトに付けたばかりの名前、ここでは MyMath、CallbackHandler はコールバック関数のプロセス名です。設定がない場合、デフォルトでは onresult が使用されます。このメソッドは以下で説明する処理に使用され、param1、param2 などは次のような受信パラメータを参照します。
<SCRIPT言語="JavaScript">
// これらの変数はすべてグローバルである必要があります。
// これらは init() と onresult() の両方で使用されるためです。
var iCallID = 0;
varintA = 5;
var intB = 6;
関数初期化()
{
// WebServiceURL のフレンドリ名「MyMath」を確立します
service.useService("/services/math.asmx?WSDL","MyMath");
// 次のメソッドではコールバック ハンドラが指定されていないため、onWSresult() が使用されます
iCallID = service.MyMath.callService("add", intA, intB);
}
onWSresult() 関数
{
// エラーがあり、呼び出しが init() の call() から来た場合
if((event.result.error)&&(iCallID==event.result.id))
{
//event.result.errorDetail プロパティからエラー情報を取得します
var xfaultcode =event.result.errorDetail.code;
var xfaultstring = イベント.結果.エラー詳細.文字列;
var xfaultsoap =event.result.errorDetail.raw;
// 特定のエラー コードを処理するコードをここに追加します
}
// エラーがなく、呼び出しが init() の call() から来た場合
else if((!event.result.error) && (iCallID ==event.result.id))
{
// 算術を見せてください!
アラート(intA + ' + ' + intB + ' = ' +event.result.value);
}
それ以外
{
alert("他の何かがイベントを発生させました!");
}
}
</スクリプト>
<body onload="init()">
<div id="service" style="behavior:url(webservice.htc)" onresult="onWSresult()">
</div>
</body>
なお、onresult メソッドを使用して返す場合は、div 部分の onresult に処理メソッドを指定する必要があります。ここでは、返された情報を使用してエラーがあるかどうかを判断する onWsresult() メソッドが使用されます。エラーが発生した場合は表示されます。
コールバックを使用する場合は、次のように処理します。
<SCRIPT言語="JavaScript">
// これらの変数はすべてグローバルである必要があります。
// これらは init() と onResult() の両方で使用されるためです。
var iCallID = 0;
varintA = 5;
var intB = 6;
関数初期化()
{
// WebServiceURL のフレンドリ名「MyMath」を確立します
service.useService("/services/math.asmx?WSDL","MyMath");
// 以下では、「mathResults」という名前のコールバック ハンドラーを使用します。
iCallID = service.MyMath.callService(mathResults, "add", intA, intB);
}
関数 mathResults(結果)
{
// エラーがあり、呼び出しが init() の call() から来た場合
if(結果.エラー)
{
//event.result.errorDetail プロパティからエラー情報を取得します
var xfaultcode = result.errorDetail.code;
var xfaultstring = result.errorDetail.string;
var xfaultsoap = result.errorDetail.raw;
// 特定のエラー コードを処理するコードをここに追加します
}
// エラーが無かった場合
それ以外
{
// 算術演算を表示します
アラート(intA + ' + ' + intB + " = " + result.value);
}
}
</スクリプト>
<body onload="init()">
<div id="service" style="behavior:url(webservice.htc)">
</div>
</body>