2009-08-12 21 views
0

静的HTMLにJavaScriptを含めただけの場合は、MicrosoftAjax.jsを使用してASMX Webサービスを呼び出す適切な方法は何ですか?MicrosoftAjax.js、SOAP Webサービス、および静的HTML

私がこれまで持っている:

<html> 
<head> 
    <title>Testing</title> 
    <script type="text/javascript" src="scripts/MicrosoftAjax.js"></script> 
    <script type="text/javascript"> 
     function testCallSoap() { 
      // in here I want to call the default HelloWorld() method 
      // it is located at ~/MyTestService.asmx 
     } 
    </script> 
</head> 

<body> 
    <div> 
     <span onclick="testCallSoap();">test</span><br /> 
    </div> 
</body> 
</html> 
+0

私はあなたが "ASMX Webサービス" –

+0

NOTEを意味すると思う:また、 InfinitiesLoopの答えを – BuddyJoe

答えて

2

は、私は正直にスクリプトマネージャのないWebサービスと呼ばれることがありません、しかし:

あなたのwebサービスで

は、あなたがいることを確認する必要があり、あなたのWebServiceクラスの使い方[ScriptService]属性。次に、このjsファイルMyService.asmx/jsを含めることができます。

[ScriptService] 
public class MyService : WebService 
{ 
    [WebMethod] 
    public string Foo() 
    { 
     return "bar"; 
    } 
} 

これは、JSONで動作するようになる...この記事を参照してください:本当に http://geekswithblogs.net/JuanDoNeblo/archive/2007/10/24/json_in_aspnetajax_part2.aspx

ない完全な答えが、私はそれはあなたが正しい方向に進んで取得します願っています。

+0

+1私はこのアプローチを見てきました。私はあなたがちょうど最初のいくつかのスクリプトのリファレンスのようなものにこれを置くことができると思います。これはプロキシをもたらすでしょう。 – BuddyJoe

1

あなたがたWebServiceProxyの静的呼び出し()メソッドを使用することができます

Sys.Net.WebServiceProxy.invoke( "foo.asmx"、 "HelloWorldの"、偽、{PARAM: 'FOO'}、するonSuccess、onFailedを);

http://msdn.microsoft.com/en-us/library/bb383814.aspx

パスは、クライアントに使用可能な一つであることが必要であるので、「〜/」例えば、動作しません。

+0

+1これが利用可能だったことさえ知りませんでした。ニース。 – BuddyJoe

0

すでにAjax.Netを使用している場合は、ScriptManagerでWebServiceを登録するのと同じくらい簡単です。これはテストされていません、私はちょうどメモリからあなたにアイデアを与えるためにそれを入力しました。

Webサービス:背後に

[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
[System.Web.Script.Services.ScriptService] 
public class MyTestService: WebService 
{ 
    [WebMethod(true), ScriptMethod] 
    public string DefaultMethod(string msg) 
    { 
     return "ZOMG HI THERE! You said: " + msg; 
    } 
} 

コードページを呼び出すにページ

partial class Test { 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     ScriptManager.GetCurrent(Page).Services.Add(new ServiceReference("~/MyTestService.asmx")); 

    } 
} 

Javascriptを呼び出すには:

function testCallSoap() { 
    MyTestService.Test("Foobar!", onTestSuccess, onTestFail); 
} 
function onTestSuccess(result) { 
    alert(result); 
} 
function onTestFail(result) { 
    alert("omg fail!"); 
    alert(result._message); 
} 
関連する問題