【问题标题】:JSON result problems in ASP.NET Web API when returning value types?返回值类型时,ASP.NET Web API 中的 JSON 结果问题?
【发布时间】:2012-12-09 20:39:21
【问题描述】:

我正在学习aspnet mvc 4 web api,发现很容易实现,只需在apicontrollers中返回对象即可。

但是,当我尝试返回 bool、int、string 等值类型时,它根本不会以 JSON 格式返回。 (在 Fiddler 中,它在 raw 和 webview 中显示“真/假”结果,但在 JSON 中根本没有内容。

有人可以帮我解决这个问题吗?

谢谢。

TestApiController 的一些示例代码:

public bool IsAuthenticated(string username)
{
    return false;
}

jQuery 使用示例代码:

function isAuthenticated(string username){
        $.getJSON(OEliteAPIs.ApiUrl + "/api/membership/isauthenticated?username="+username,
            function (data) {
                alert(data);
                if (data)
                    return true;
                else
                    return false;
            });
}

注意:上面的 jquery 没有返回任何内容,因为返回了 EMPTY 内容 - 但是如果您在 fiddler 中检查它,您实际上可以看到在 webview 中返回“false”。

干杯。

【问题讨论】:

  • 在此处发布您的控制器/操作的一些代码

标签: asp.net-mvc-4 asp.net-web-api


【解决方案1】:

在你的回调函数被调用之前,返回数据被传递给 jquery parseJSON 方法,它期望数据是 JSON 格式。如果响应格式不正确,jQuery 将忽略响应数据并返回 null。您有两个选择,将返回布尔值包装在一个类或匿名类型中,以便 web api 将返回一个 JSON 对象:

return new { isAuthentication = result }

或者不要使用 jQuery 中的 getJSON,因为您没有返回格式正确的 JSON 响应。也许只是使用$.get

以下是对 jQuery 文档的引用:

重要提示:从 jQuery 1.4 开始,如果 JSON 文件包含语法错误, 请求通常会静默失败。避免频繁的手工编辑 出于这个原因的 JSON 数据。 JSON 是一种数据交换格式 比 JavaScript 对象更严格的语法规则 字面符号。例如,所有用 JSON 表示的字符串, 无论它们是属性还是值,都必须包含在 双引号。有关 JSON 格式的详细信息,请参阅http://json.org/

【讨论】:

  • 谢谢!一定要声明带有object作为返回类型的方法。
猜你喜欢
  • 2011-07-18
  • 1970-01-01
  • 2021-01-04
  • 1970-01-01
  • 2013-05-26
  • 1970-01-01
  • 2011-09-29
  • 1970-01-01
  • 2016-03-22
相关资源
最近更新 更多