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