当前位置: 首页 > 面试题库 >

如何从2.0 asmx Web服务返回JSON

尹俊雅
2023-03-14
问题内容

我正在使用.Net framework 2.0 / jQuery对2.0
Web服务进行Ajax调用。无论我在ajax调用中将contentType设置为什么,该服务始终返回XML。我希望它返回Json!

这里是电话:

      $(document).ready(function() {
         $.ajax({
            type: "POST",
            url: "DonationsService.asmx/GetDate",
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(msg) {
              // Hide the fake progress indicator graphic.
              $('#RSSContent').removeClass('loading');

              // Insert the returned HTML into the <div>.
              $('#RSSContent').html(msg.d);
            }
          });
        });

这是Fiddler中请求标头的样子:

POST /DonationsService.asmx/GetDate HTTP/1.1
x-requested-with: XMLHttpRequest
Accept-Language: en-us
Referer: http://localhost:1238/text.htm
Accept: application/json, text/javascript, */*
Content-Type: application/json; charset=utf-8
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; eMusic DLM/4; .NET CLR 2.0.50727)
Host: localhost:1238
Content-Length: 2
Connection: Keep-Alive
Pragma: no-cache

我尝试将contentType设置为’text / json’并获得相同的结果。

这是Web服务方法

<WebMethod()> _
Public Function GetDate() As String

    'just playing around with Newtonsoft.Json
    Dim sb As New StringBuilder
    Dim sw As New IO.StringWriter(sb)
    Dim strOut As String = String.Empty

    Using jw As New JsonTextWriter(sw)
        With jw
            .WriteStartObject()
            .WritePropertyName("DateTime")
            .WriteValue(DateTime.Now.ToString)
            .WriteEndObject()
        End With
        strOut = sw.ToString
    End Using

    Return strOut

End Function

这是它返回的内容:

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://DMS.Webservices.org/">{"DateTime":"11/13/2008 6:04:22 PM"}</string>

有人知道我要Json时如何强制Web服务返回Json吗?

请不要告诉我升级到.Net Framework 3.5或类似的东西(我不是那么愚蠢)。我需要一个2.0解决方案。


问题答案:

从ASP.NET 2.0中的ASMX服务返回JSON没问题。您只需要安装ASP.NET AJAX扩展。

确保将[ScriptService]装饰添加到Web服务。这就是指示ASP.NET AJAX框架的服务器端部分返回JSON的形式正确的请求。

另外,如果在2.0中使用,则需要从示例“ msg.d”中删除“ .d”。 “
.d”是3.5附带的安全功能



 类似资料:
  • 问题内容: 早上, 我需要从Web服务返回一条消息。以下是我的代码示例,我正在返回一个字符串。 我目前收到以下回应… 我理想上想返回类似 我敢肯定,一旦我有了主意,就可以在需要时退还其他物品。这只是我需要解决的基础。 非常感谢所有帮助,在此先感谢:) 更新:刚发现这个… 我需要类似的东西吗 问题答案: 用: 返回的结果将类似于:

  • 问题内容: 我正在尝试从WCF服务返回一些JSON。该服务仅从我的数据库返回一些内容。我可以得到数据。但是,我担心JSON的格式。当前,返回的JSON格式如下: 实际上,我希望JSON的格式尽可能整洁。我相信(我可能是不正确的),以干净的JSON表示的相同结果集应如下所示: 我不知道“ d”来自哪里。我也不知道为什么要插入转义字符。我的实体如下所示: 负责返回内容的服务定义为: 如何从WCF服务返

  • 问题内容: 我正在尝试通过JSONP获取一些数据。使用Firebug,我可以看到正确返回的数据,但是我很难思考如何解析它。数据返回真的是嵌套数组正确吗?是回调函数的名称。数据如下所示: 关于如何正确解析和输出只是有些困惑。 问题答案: 您不必解析数据。它已经是有效的JavaScript对象。例如,要在someFunction中打印第一个对象的description属性

  • 问题内容: 抱歉再次困扰您,但是我仍然找不到从活动到服务的回调方法… 找到了类似的问题- 如何在Android中定义回调? 但还不确定如何将该示例集成到我的项目中。 任何建议或指向清晰教程的链接都很棒! 问题答案: 在示例中显示的这种回调(观察者模式)在服务和活动之间不起作用。当您从类A 创建了 类B 的实例 并希望将回调从B发送到A 时,请使用观察者模式。 关于服务和活动,情况完全不同。AFAI

  • 我正在调用一个函数,其中有一个订户函数。此函数必须返回一个数组,但它给出了一个错误: 缺少订阅。 如何做到这一点?

  • 问题内容: 在这种情况下,我不得不学习新技术并运行新技术而又没有时间学习基础! 我有以下js函数调用PrintService,该函数向我返回要注入div的HTML: 在另一个例子中我注意到“ .d”之前,我为此苦苦挣扎 因此,它可以工作-但是为什么呢?这是什么“ .d”? 抱歉,如果这是一个菜鸟问题,但google不是我的朋友。 谢谢 编辑:Magnar是正确的,它是.NET特定的东西。 在此处查