从 ASMX Web 服务返回 JSON,无需 XML 包装器?

2023-12-15

我需要从 C# Web 服务获取 Json 数据。

我知道有几个基于此的问题,相信我,我已经阅读了很多,但只是让我更加困惑。

这就是我所做的:

在我的网络服务中,我包括:[System.Web.Script.Services.ScriptService]对于班级&[ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)]对于方法

我也用过JavaScriptSerializer()将我的数据转换为字符串

我正在使用调用此服务$.getJSON()

如果我不使用它,我会收到跨域引用错误。

为此,我必须设置 m 服务来获取回调函数名称 所以我正在通过this.Context.Request["callback"]+ 序列化 Json 数据;

但在输出中我把它包裹在

< string xmlns="http://XYZ...">  

标签内的数据是我需要的格式

我还尝试使用以下方法设置内容类型:$.ajaxSetup({ scriptCharset: "utf-8" , contentType: "application/json; charset=utf-8"});

但仍然没有成功。

后来添加:我接受了 frenchie 的 anwser,因为我知道这是正确的方法,但我仍然无法让它工作...我只是将网络服务和网站放在同一个域中并使用 xml,我知道这不是最好的方法,但我已经花了两天时间了,不能再浪费了。


用这个:

var JsonString = ....;
$.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    url: "YourWebServiceName.asmx/yourmethodname",
    data: "{'TheData':'" + JsonString + "'}",
    dataType: "json",
    success: function (msg) {
        var data = msg.hasOwnProperty("d") ? msg.d : msg;
        OnSucessCallBack(data);
    },
    error: function (xhr, status, error) {
        alert(xhr.statusText);
    }
});

function OnSuccessCallData(DataFromServer) {
 // your handler for success    
}

然后在服务器端,在 AppCode 文件夹中自动生成的代码隐藏文件中,编写如下内容:

using System.Web.Services;
using System.Web.Script.Serialization;

    [System.Web.Script.Services.ScriptService]
    public class YourWebServiceName : System.Web.Services.WebService
    {
        [WebMethod]
        public string yourmethodname(string TheData)
        {
          JavascriptSerializer YourSerializer = new JavascriptSerializer();
          // custom serializer if you need one 
          YourSerializer.RegisterConverters(new JavascriptConverter  [] { new YourCustomConverter() });

          //deserialization
          TheData.Deserialize(TheData);

          //serialization  
          TheData.Serialize(TheData);
        }
    }

如果您不使用自定义转换器,则服务器端对象的 json 字符串和 C# 类定义之间的属性必须匹配,反序列化才能正常工作。对于序列化,如果您没有自定义转换器,则 json 字符串将包含 C# 类的每个属性。你可以加[ScriptIgnore]就在 C# 类中的属性定义之前,如果您不指定自定义转换器,则序列化程序将忽略该属性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 ASMX Web 服务返回 JSON,无需 XML 包装器? 的相关文章

随机推荐

  • 从文件中读取 C++

    您好 我想将 VTK 文件中的数据读取到我的 C 程序中 这是我的文件通常的外观 积分 2 双 1 2 3 4 点数据2 SCALARS 压力双倍 LOOKUP TABLE 默认值 5 6 标量密度双倍 LOOKUP TABLE 默认值 7
  • 将地图视图缩放到放置图钉的区域

    如果我的地图视图中有 3 个图钉 当地图加载时我将如何缩放到这些图钉 也就是说 当地图加载时 我需要有一个缩放视图 但该视图应该容纳放置在地图中的所有图钉 当地图只有一根图钉时 它就可以工作了 但我无法处理多个引脚的缩放 需要帮助 下面的方
  • bash: C:/Program: 没有这样的文件或目录

    我是 Docker Debezium Bash 和 Kafka 的新手 我正在尝试在 Windows 10 上运行 MSSQL Server 的 Debezium 教程 示例 https github com debezium debezi
  • UIActivityViewController 在 Whatsapp 和所有共享选项中共享文本

    在我的应用程序中我使用了UIActivityViewController在 Whatsapp Facebook 和 Twitter 等中分享文本 我正在使用 iOS 9 和 Xcode 7 2 版本 当我单击 Whatsapp 图标并单击特
  • htaccess 重写导致 500 错误而不是 404

    我最近将这一点代码添加到我的 htaccess file RewriteCond REQUEST FILENAME f RewriteCond REQUEST FILENAME d RewriteRule 1 php L QSA 好吧 我想
  • 如何使用 PowerShell 更改 cmd 的当前目录?

    我使用读取了一些文件PowerShell 并相应地更改当前目录 但我所能做的就是更改当前目录PowerShell的当前目录 而不是调用者的目录 调用该 ps1 文件的 cmd exe 环境 我尝试过的事情 powershell ch dir
  • 将默认设计主题更改为自定义颜色

    我对 Android Studio 很陌生 作为初学者 我创建了一个简单的应用程序 仅用于测试目的并查看 Android studio 材质主题的外观 我目前正在使用最新版本 即 l 预览 Studio 0 8 2版本 在这里 我刚刚创建了
  • 帮助从 .Net 创建 Zip 文件并从 Java 读取它们

    我正在尝试从 Net 创建一个可以从 Java 代码读取的 Zip 文件 我已经使用 SharpZipLib 创建了 Zip 文件 但如果生成的文件根据 ZipLib 库的 CheckZip 函数有效 并且可以通过 WinZip 或 Win
  • 如何使用字母而不是数字来顺序计数?

    有没有一种简单的方法可以在Python中使用字母进行计数 意思是 A 将用作 1 B 将用作 2 依此类推 Z 之后将是 AA AB 等 所以下面的代码将生成 def get next letter last letter return l
  • Response.Redirect 有时会忽略 URL 编码

    在我当前正在构建的网站中 我们需要大量动态重定向 以维持网站各部分的流量 我目前正在使用response redirect 来实现此目的 重定向URL 是在各种按钮的回发方法后面的代码中动态生成的 这在 95 的情况下都没有问题 但我注意到
  • NSMutableURLRequest 和“请求主体流耗尽”错误

    我对 http PUT 请求和请求正文作为来自文件的流有疑问 无论文件大小有多大 我都会收到错误 NSURLErrorDomain 1021 request body stream exeded 我知道我可以通过实施以下方法来解决这个问题
  • 如何从圆角矩形的顶部中心开始描边

    我想用 SVG 制作一个按钮并复制 YouTube 的自动播放圈 我一直在尝试让笔划在顶部中心开始和结束 但它会在左上角开始最好 因为当我开始更改笔划 dasharry 和笔划 dashoffset 周围的数字时 它开始在开始或结束 我知道
  • ListFragment OnListItemClick 未被调用

    我有一个扩展 ListFragment 的类 它重写了 OnListItemClick 方法 我也在另一个 ListFragment 中以相同的方式执行此操作 并且该方法被调用 我想知道为什么当我单击列表项时该方法没有被调用 这是代码 pa
  • IE 需要 2 个文本框来提交一个按钮?

    我遇到了这个奇怪的问题 我不确定是 ASP NET 还是 IE 7 造成的 这个想法是这样的 当我的表单上只有一个文本框和一个 提交 按钮时 在文本框中按 ENTER 键将仅发布文本框的值 该按钮不会被提交 即使在服务器端也不会触发单击 当
  • Excel VBA 应用程序.OnTime。我认为使用这个……想法是个坏主意?

    我支持的许多用户要求事情自动发生 当然更自动 但这是另一点 一个希望事件每 120 秒发生一次 请参阅我的其他问题 另一个希望在每个工作日下午 5 点发生一件事 这必须在 Excel 工作表上 因此 VBA 作为插件等将是不行的 因为它需要
  • HTML 画布矩形内的阴影效果

    背景 我正在使用浏览器 HTML5 canvas 元素 我有代码 我在网上找到 允许我在画布上绘制一个矩形 Question 我想在鼠标移动事件触发时应用如图所示的 阴影 效果 如何才能实现这一目标 当前方法 我当前的方法是在触发 mous
  • ASP.NET 会话和删除文件夹

    我有一个网络应用程序 管理员可以在其中创建新闻 pdf 文档和他的 cms 面板中的其他内容 问题是 当管理员删除新文件或其他文件时 应用程序会删除与该新文件相关的所有文件 我指的是图像 pdf 和其他文档 主要问题是这些文件存储在 新闻
  • 如何从 JSF 数据表内的 selectOneMenu 获取值?

    我有一个包含一堆行的 JSF 数据表 每行内部都有一个 selectOneMenu 如下所示
  • 跨 PHP、MySQL 等管理日期的最佳方法是什么?

    我的服务器在达拉斯 我在纽约市 PHP 和 MySQL 都有用于设置时区的配置变量 我如何让他们一起工作 我应该在 MySQL 中存储哪些日期 如何让 PHP 根据用户的偏好来处理日期更改 请记住 我认为我从未让 PHP 显式设置过日期 它
  • 从 ASMX Web 服务返回 JSON,无需 XML 包装器?

    我需要从 C Web 服务获取 Json 数据 我知道有几个基于此的问题 相信我 我已经阅读了很多 但只是让我更加困惑 这就是我所做的 在我的网络服务中 我包括 System Web Script Services ScriptServic