首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >[ScriptMethod(ResponseFormat = ResponseFormat.Json)]

[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
EN

Stack Overflow用户
提问于 2010-05-18 01:06:29
回答 1查看 8.7K关注 0票数 7

在ASP.net web服务中,如果没有指定上面的内容,那么默认的响应格式是什么?另外,如果我的web服务如下:

代码语言:javascript
复制
[WebMethod()]
        public List<Sample> GenerateSamples(string[][] data)
        {
            ResultsFactory f = new ResultsFactory(data);

            List<Sample> samples = f.GenerateSamples();
            return samples;
        }

返回对象列表,如果我将响应格式更改为JSON,我必须将返回类型更改为string,那么我如何在javascript中访问对象?

目前,我在JS中调用此web服务,如下所示:

代码语言:javascript
复制
 $.ajax({
    type: "POST",
    url: "http://localhost/TemplateWebService/Service.asmx/GenerateSamples",
        data: jsonText,

        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(response) {
            var samples = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d;

            if (samples.length > 0) {
                doSomethingHere(samples);
            } else {
                alert("No samples have been generated");
            }



        },

        error: function(xhr, status, error) {
            var msg = JSON.parse(xhr.responseText);
            alert(msg.Message);
        }

    });

我注意到,即使一切都运行得很好,eval语句也从不执行,这意味着web服务总是返回一个字符串!

所以我的问题是,在web服务定义方面,ScriptMethod(ResponseFormat = ResponseFormat.Json)是必要的吗?

现在的情况是,我可以使用samples数组,像在任何OOP代码中一样访问每个对象及其属性,这非常方便,而且一切工作都没有问题,但我只是想确保我的设置中没有遗漏任何东西。

我从Encosia端获取了将Jquery的ajax与asp.net相结合的基础知识,但这里没有提到响应类型-我在另一个网站上读到了它,我不确定它有多重要。

http://www.codeproject.com/KB/webservices/JsonWebServiceJQuery.aspx

列出了asp.net web服务端的4个不同更改。我只在我的web.config中有前2个。服务本身和示例类是在没有任何序列化的情况下实现的,但它确实具有属性。我猜默认情况下web服务是JSON?只要你的对象有属性,它们在默认情况下是可序列化的?这是我在读到这篇文章之前的理解。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-20 22:23:31

ResponseFormat属性不是必需的。包括客户端和服务器设置在内,只需执行以下四项操作:

使用带有POST动词的内容类型web.config.

  • Decorate

  • ScriptHandlerFactory HttpHandler在web服务的ScriptService中添加web服务的方法。

  • 使用"application/json".

请求服务的方法

当您执行这四项操作时,服务方法的响应将自动序列化为JSON。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2851117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档