2009-08-12 3 views
0

JavaScript를 정적 HTML에 포함시키는 경우 MicrosoftAjax.js를 사용하여 ASMX 웹 서비스를 호출하는 적절한 방법은 무엇입니까?MicrosoftAjax.js, SOAP 웹 서비스 및 정적 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 웹 서비스" –

+0

주를 의미 생각 : 또한 InfinitiesLoop의 대답을 읽어라. – BuddyJoe

답변

2

는 솔직히 스크립트 관리자없이 웹 서비스 호출되지 않습니다했지만 :

당신의 웹 서비스에서

, 당신이 있는지 확인하셔야합니다 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 나는이 접근법을 보았다. 나는 당신이 처음 몇개의 스크립트 refs 에 이런 식으로 넣을 수 있다고 생각한다. 이것은 프록시를 가져올 것이다. – 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를 등록하는 것만 큼 쉽습니다. 이 테스트되지 않은, 그냥 메모리에서 입력하면 아이디어를 제공합니다.

웹 서비스 : 페이지 호출에 페이지

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

    } 
} 

자바 스크립트 호출에 뒤에

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

코드 :

function testCallSoap() { 
    MyTestService.Test("Foobar!", onTestSuccess, onTestFail); 
} 
function onTestSuccess(result) { 
    alert(result); 
} 
function onTestFail(result) { 
    alert("omg fail!"); 
    alert(result._message); 
}