2011-11-20 2 views
5

내가 JSON을 반환하는 내 웹 서비스를 필요로 반환해야 웹 서비스는 ... JSON

나는이 내이 .asmx 파일에 다음 코드를

<?xml version="1.0" encoding="utf-8"?> 
<Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/"> 
    <FirstName>Dave</FirstName> 
    <LastName>Ward</LastName> 
</Person> 
다음 반환

namespace Feed 
{ 
    [WebService(Namespace = "http://tempuri.org/")] 
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
    [System.ComponentModel.ToolboxItem(false)] 

    [System.Web.Script.Services.ScriptService] 
    public class searchPerson : System.Web.Services.WebService 
    { 

     [WebMethod] 
     [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
     public Person GetDave() 
      { 
       Person dave = new Person(); 

       dave.FirstName = "Dave"; 
       dave.LastName = "Ward"; 

     return dave; 
     } 
    } 
} 

XML 대신 JSON을 반환하도록하려면 어떻게해야합니까?

+0

XML이 아닌 JSON이 필요한 경우 왜 네임 스페이스가 정의되어 있습니까? – Oded

+0

둘 다 지금처럼 설정되어있는 것 같습니다. YourPage.asmx/js로 이동하여 Javascript 프록시 스크립트를 볼 수 있습니까? –

+0

@MikeChristensen 가능합니다. – Mikael

답변

5

웹 서비스 정의가 올바르게 보입니다. 게시물을 통해 서비스를 호출하고 있는지 확인하고 해당 키가 'content type'헤더를 application/json으로 지정하고 있음을 기억하십시오.

(이것은 jQuery를 사용하지만 만약 당신이 좋아하면 당신은 낮은 수준의 자바 스크립트를 사용할 수 있습니다)

$.ajax({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8;", 
    url: "http://MyWebServiceURL", 
    data: JSON.stringify({ ParameterName: "DataToSend" }), 
    dataType: "json", 
    success: function (data, textStatus, jqXHR) { 
     //do something 
    }, 
    error: function (jqXHR, textStatus, errorThrown) { 
     //fail nicely 
    } 
}); 
+0

이것은 웹 서비스가 작동하고있는 것을 보였습니다. 문제는 내 iPhone 응용 프로그램에서 호출하는 방법이었습니다. – Mikael

1

이 시작하기 전에 아래 referances를 추가하기위한,

using System.Web.Script.Services; 
using System.Web.Script.Serialization; 

를 사용하여 아래의 코드를 당신의 방법에 모든 데이터를 JSON으로 변환합니다.

JavaScriptSerializer serializer = new JavaScriptSerializer(); 
return serializer.Serialize(empData); 

empData는 데이터 배열입니다. DataTable의 행입니다.