gpt4 book ai didi

c# - ASMX 网络服务 - 返回 JSON 而不是 XML

转载 作者:太空狗 更新时间:2023-10-29 21:23:56 28 4
gpt4 key购买 nike

我有一个包含一个方法的网络服务:

[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 数据源的 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"

关于c# - ASMX 网络服务 - 返回 JSON 而不是 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9914782/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com