2009-08-12 64 views
0

什麼是調用ASMX Web服務與MicrosoftAjax.js如果你只是包括JavaScript的在靜態HTML的正確方法?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服務」 – 2009-08-12 21:28:03

+0

注:也閱讀InfinitiesLoop的回答 – BuddyJoe 2009-08-24 23:03:20

回答

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 2009-08-14 15:33:07

1

可以使用WebServiceProxy的靜態invoke()方法:

Sys.Net.WebServiceProxy.invoke( 「foo.asmx」, 「HelloWorld」 的,假的,{PARAM: '富'}的onSuccess,onFailed );

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

的路徑必須是一個客戶端可用的一個,所以「〜/」不工作,例如。

+0

+1甚至不知道這是可用的。尼斯。 – BuddyJoe 2009-08-14 15:33:42

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); 
}