2010-01-23 6 views
0

$ .get()을 사용하여 WfService.asmx 파일에서 간단한 메소드를 호출해야합니다. jQuery를 사용하여

[WebMethod] 
public int Sum() 
{ 
    return 10 + 10; 
} 

이제 코드 :

이 POST method.Here의 방법에 잘 작동

$.get('WfService.asmx/Soma',function(data){ 
alert(data.d);},"json"); 

와 나는 오류 메시지가 표시됩니다. 내가 뭘 잘못 했니?

+1

SOAP 서비스 일 가능성이 거의 없다는 것을 잘 알고 있습니까? 어떤 종류의 오류가 발생합니까? –

+0

네, SOAP 서비스입니다. 오류는 "잘못된 형식의 쿼리 문자열"과 같습니다. – ozsenegal

답변

2

SOAP 웹 서비스와 통신하려면 서비스에서 정의한 WSDL을 준수하는 올바른 형식의 SOAP XML을 보내야합니다. 명시 적으로 JSON 데이터를 반환하도록 ASP.NET 웹 서비스를 설정하지 않은 경우에는 SOAP 메시지를 먼저 만들지 않고 $ .get() 요청을 할 수 없습니다.

+0

일단 ASP.NET 웹 서비스에 JSON 반환을 포함 시켰습니다. JQUERY를 사용하는 호출이 정확합니까? – ozsenegal

+0

시간이 얼마 남지는 않았지만 그래야합니다. –

1

jQuery를 함께 작업하는 ASP.NET SOAP 웹 서비스 (ASMX)을 얻으려면, 먼저 추가 가지고 ScriptServiceAttribute (System.Web.Script.Services에 있음) 서비스 자체에 :

[ScriptService] // <--- here 
public class MyWebService : WebService 
{ 
    [WebMethod] 
    public int Sum(int x, int y) 
    { 
     return x + y; 
    } 
} 

프로젝트가 아닌 경우 하는 ASP.NET AJAX 프로젝트로 만들어, 다음으로 web.config을 수정해야 할 수 있습니다 :

<configuration> 
    <system.web> 
    <httpHandlers> 
     <remove verb="*" path="*.asmx"/> 
     <add verb="*" path="*.asmx" validate="false" 
      type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> 
    </httpHandlers> 
    </system.web> 
</configuration> 

(주 - 해당 버전으로 System.Web.Extensions 어셈블리 참조를 업데이트 -이 ASP.NET AJAX 1.0에 대한 인 곱슬 곱슬하지 않다. nt. 나는 그렇지 않으면 나는 그것을 게시 할 것, 2.0에 대한 정보가없는)

는 jQuery 코드는 다음처럼 작성할 수 있습니다. 이것은 XML에 의존하는 클라이언트를 깰 것

$.ajax({ 
    type: "POST", 
    url: "/MyWebService.asmx/Sum", 
    data: "{x: 2, y: 5}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(msg) { 
     $("#Result").html(msg); 
    } 
}); 

주 서비스 -이 대답을 위해서 웹 서비스의 유일한 소비자는 jQuery 또는 적어도 JavaScript를 사용하는 웹 사이트라고 가정합니다. 두 시나리오를 모두 지원해야한다면 두 개의 웹 서비스를 만들어야합니다. @Aaronaught에 의해 게시

+0

당신은 코드를 읽었습니까? 나는 POST 요청이 아니라 GET 요청에 대해 이야기합니다. 샌드는 샌드 박스입니다. 여기에 문제가 있습니다. $ .get을 사용하여 SOAP 웹 서비스를 호출하는 방법과 추가 매개 변수를 전달하고 싶지 않습니다. – ozsenegal

+0

@ozsenegal : 예, 코드를 읽었습니다. ASMX 웹 서비스 **는 GET 의미를 지원하지 않습니다. ** WCF는 사용할 수 있지만 SOAP은 사용할 수 없습니다.대신에 Ajax'POST'를 사용하는 것에 대한 문제점은 무엇입니까? "샌드 박스"란 무엇입니까? 매개 변수를 전달하지 않으려면'data' 공백을 그대로 두십시오. – Aaronaught

+0

알았어, 알았다. SOAP 웹 서비스가 GET 요청을 지원하지 않는다. 잘 했어. 고마워. – ozsenegal

0

예를 작동하지만, 한 메모와 함께 => 당신은 당신의 웹 서비스 방식에 속성을 추가해야합니다

[ScriptMethod(UseHttpGet = true,ResponseFormat=ResponseFormat.Json)] 

예 :

[WebMethod(EnableSession = true)] 
[ScriptMethod(UseHttpGet = true,ResponseFormat=ResponseFormat.Json)] 
public int Add(int num1,int num2) { 


    return num1 + num2; 
} 

그리고 당신의 JQuery와 아약스의

POST에서 GET으로 형식을 변경해야합니다. .NET 4에서 작동하며 web.config 파일에서도이 구성이 필요하지 않습니다.

건배

관련 문제