1

我正在学习 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”。

干杯。

4

1 回答 1

0

在您的回调函数被调用之前,返回数据被传递给 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/

于 2012-12-10T05:33:05.500 回答