c# – ASMX webservice – 返回JSON而不是XML
发布时间:2020-12-15 08:43:25 所属栏目:百科 来源:网络整理
导读:我有一个包含一种方法的Web服务: [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 JavaScriptS
我有一个包含一种方法的Web服务:
[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); } } 该方法正确地序列化了对象,但是当我在FireBug中查看响应时,它看起来像这样: <?xml version="1.0" encoding="utf-8"?> <string xmlns="http://tempuri.org/">[{"Title":"SQL","ReleaseDate":"/Date(1224007200000)/"},{"Title":"Termonator Salvation","ReleaseDate":"/Date(1224007200000)/"}]</string> 这是我使用Kendo Data Source的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中使用它?我哪里错了? 解决方法
您需要指定方法的
ResponseFormat :
[WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public string GetMovies() { } 注意:为了解决类似问题的其他人,同样重要的是要注意您应该使用POST请求,而不是GET请求.见:JSON Hijacking and How ASP.NET AJAX 1.0 Avoids these Attacks 编辑 基于您发布的jQuery,您没有调用正确的方法.你C#定义了一个名为GetMovies的方法,但你的jQuery正试图调用一个名为`Movies’的方法. 这个: url: "/MovieService.asmx/Movies" 应改为: url: "/MovieService.asmx/GetMovies" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |