2012-03-28 19 views
6

私は1つの方法が含まれているWebサービスを持っている:ASMXのWebサービス - リターンJSONの代わりに、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 

私はjQueryの中でそれを使用することができますので、どのように私は上記のデータをJSONに変換することができ、このエラーを得たとき?そしてどこが間違っていますか?

+0

をなぜあなたはここにJSONPを使用していますか?それは意味をなさない。 – Joe

+0

私はjsonpを削除しますが、問題はまだ同じですplz解決します –

+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


EDIT

。 C#はGetMoviesというメソッドを定義していますが、jQueryは「Movies」というメソッドを呼び出そうとしています。

この:

url: "/MovieService.asmx/Movies" 

はこれに変更する必要があります。

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

そしてGET – Joe

+0

何も起こっていない同じ問題が生まれる –

+1

@HaseebKhan、まずは、私を親切に呼んではいけません:-)。第2に、これはJSON形式のデータを返す適切な方法です。私の答えを見直し、テスト環境で適切に実装したことを確認してください。 –

関連する問題