2011-09-27 3 views
1

다음과 같은 문제점이 있습니다. 하나의 ASP가 있습니다. NET Web Service 프로젝트 (*. asmx)는 몇 가지 기능을 가지고 있으며 두 번째 프로젝트이며 ASP .NET도 jQuery Ajax (서비스 참조 없음)를 사용하여 서비스를 호출해야한다. 웹 서비스 프로젝트 :jQuery Ajax에서 원격 호출 ASP.Net 웹 서비스

[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
[System.ComponentModel.ToolboxItem(false)] 
[System.Web.Script.Services.ScriptService] 
public class MathService : System.Web.Services.WebService 
{ 

    [WebMethod] 
    [ScriptMethod] 
    public int Add(int x, int y) 
    { 
     return x + y; 
    } 
} 

<script type="text/javascript" src="Scripts/jquery-1.6.4.min.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $.ajax({ 
      type: "POST", 
      url: "http://localhost:47204/Services/MathService.asmx/Add", 
      data: "{'x': '5', 'y': '10'}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (res) { 
       $("#divMathService").text(res.d); 
      }, 
      error: function() { 
       alert("ALARM!"); 
      } 
     }); 
    }); 
</script> 

이 - 로컬 호스트 : 47,204 - 호스트 웹 서비스 프로젝트, 내가 프로젝트를 디버깅 할 때. 나는 클라이언트 프로젝트에서 사용할 URL을 구체적으로 지적했다. 프로젝트가 제대로 작동합니다. 다음과 같이 프로젝트 클라이언트 같습니다

<script type="text/javascript" src="Scripts/jquery-1.6.4.min.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $.ajax({ 
      type: "POST", 
      url: "http://localhost:47204/Services/MathService.asmx/Add", 
      data: "{'x': '5', 'y': '10'}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (res) { 
       $("#divMathService").text(res.d); 
      }, 
      error: function() { 
       alert("ALARM!"); 
      } 
     }); 
    }); 
</script> 

을하지만,이 프로젝트가 어떤 결과를 표시하지 않습니다 만 경고, 그 이유를 이해하지 않습니다. 원격 호출에 대한 권한 문제 일 수 있습니까?

프로젝트를 첨부 할 수는 없지만 누군가 프로젝트를보고 싶다면 이메일을 보낼 수 있습니다. 또한, 귀하의 방법을 알 필요가

'{"x": 5, "y": 10}' 

는 JSON으로 응답 보낼 :

+0

당신은 "원격 호출"에 대해 얘기를하고 이 경우 서버가 클라이언트와 다른 도메인에서 호스팅된다는 것을 의미하므로 코드가 작동하지 않습니다. 달성 할 수있는 유일한 방법은 JSON-P를 사용하는 것이며 ASMX WebService로 빌드하는 것은 어렵거나 거의 불가능하다고 생각합니다. –

+0

[피들러]와 같은 도구를 사용하는 것이 좋습니다 (http : //www.fiddler2 .com/fiddler2 /)를 사용하여 Ajax 요청을 디버깅 할 수 있습니다. 당신은 오류의 원인을 볼 수 있습니다 –

답변

0

첫 번째 유효한 JSON과 같은 데이터 포맷을 시도

[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public int Add(int x, int y) 
+0

모두! 원격 호출에 대해 getJSON() 메서드를 사용하여이 문제를 해결했습니다. –