Csharp/C#教程:ASMX webservice – 返回JSON而不是XML分享


ASMX webservice – 返回JSON而不是XML

我有一个包含一种方法的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中查看响应时,它看起来像这样:

  [{"Title":"SQL","ReleaseDate":"/Date(1224007200000)/"},{"Title":"Termonator Salvation","ReleaseDate":"/Date(1224007200000)/"}] 

这是我使用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劫持以及ASP.NET AJAX 1.0如何避免这些攻击


编辑

基于您发布的jQuery,您没有调用正确的方法。 你C#定义了一个名为GetMovies的方法,但你的jQuery试图调用一个名为`Movies’的方法。

这个:

 url: "/MovieService.asmx/Movies" 

应改为:

上述就是C#学习教程:ASMX webservice – 返回JSON而不是XML分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 url: "/MovieService.asmx/GetMovies" 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1007395.html

(1)
上一篇 2021年12月29日
下一篇 2021年12月29日

精彩推荐