2012-03-28 7 views
6

의 반환 JSON 나는 하나 개의 방법이 포함 된 웹 서비스가 있습니다ASMX 웹 서비스 대신 XML

[WebMethod] 
public string Movies() 
{ 
    using (var dataContext = new MovieCollectionDataContext()) 
    { 
     var query = dataContext.Movies.Select(m =>new{m.Title,m.ReleaseDate}).Take(20); 
     var serializer = new JavaScriptSerializer(); 
     return serializer.Serialize(query); 
    } 
} 

이 방법은 적절하게 개체를 직렬화를,하지만 난 방화범 응답을 볼 때, 그것은 다음과 같습니다

여기
<?xml version="1.0" encoding="utf-8"?> 
<string xmlns="http://tempuri.org/">[{"Title":"SQL","ReleaseDate":"\/Date(1224007200000)\/"},{"Title":"Termonator Salvation","ReleaseDate":"\/Date(1224007200000)\/"}]</string> 

제가 사용되는 방법의 jQuery 검도 데이터 소스

$(function() { 
    alert("Welcome To Kendo"); 
    var dataSource = new kendo.data.DataSource(
       { 
        transport: { 
         read: { 
          type: "POST", 
          dataType: "json", 
          url: "/MovieService.asmx/Movies" 
          // contentType: "application/json; charset=utf-8" 

         } 
        }, 
        change: function (e) { 
         alert(e); 

        }, 
        error: function (e) { 
         alert(e[2]); 
        }, 
        pageSize: 10, 
        schema: { 
         data: "d" 

        } 


       }); 

    $("#MovieGridView").kendoGrid({ 
     dataSource: dataSource, 
     height: 250, 
     scrollable: true, 
     sortable: true, 
     pageable: true, 
     columns: [ 
      { field: "Title", title: "Movie Name" }, 
      { field: "ReleaseDate", title: "Movie Release" } 
      ], 
     editable: "popup", 
     toolbar: ["create"] 
    }); 
}); 

상기 코드의 어떻게 내가이 jQuery를에 뭐하는 거지와 오류 이벤트 호출 나는이 오류를 받았을 때

SyntaxError: JSON.parse: unexpected character 

가 어떻게 JSON에 위의 데이터를 변환 할 수 있습니다 그래서 jQuery를에 사용할 수 있습니까? 그리고 내가 어디로 잘못 가고 있니?

+0

? 그것은 말이되지 않습니다. – Joe

+0

확인 jsonp를 제거하지만 문제는 여전히 동일합니다. –

+0

WCF와 JSONP를 사용하여 매우 멋진 조합을 사용하고 완벽하게 작업하는 다른 방법을 찾았습니다. –

답변

8

당신은 방법의 ResponseFormat를 지정해야합니다

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public string GetMovies() { 
} 

참고 : 유사한 문제를 가진이 질문에 도착 다른 사람을 위해서는, 당신이 POST를 사용되는 것을주의하는 것도 중요 요청이 아니며 GET 요청이 아닙니다. 참조 : 당신은, 당신은 올바른 메소드를 호출하지 않을 게시 jQuery를 기반으로 JSON Hijacking and How ASP.NET AJAX 1.0 Avoids these Attacks


편집

. C#에서는 GetMovies이라는 메서드를 정의하지만 jQuery는 'Movies'라는 메서드를 호출하려고합니다.

이 :

url: "/MovieService.asmx/Movies" 

이로 변경해야을 : 왜 당신이 여기 JSONP를 사용하는

url: "/MovieService.asmx/GetMovies" 
+0

그리고 GET을 사용하지 마십시오. – Joe

+0

아무런 일도 일어나지 않는다. –

+1

@HaseebKhan, 무엇보다 먼저 나를 부르지 마라 .--). 둘째, JSON 형식의 데이터를 반환하는 적절한 방법입니다. 내 대답을 검토하고 테스트 환경에서 올바르게 구현했는지 확인하십시오. –