【问题标题】:Returning JSON with web api使用 web api 返回 JSON
【发布时间】:2013-07-22 19:27:26
【问题描述】:

我正在使用以下内容与 Web api 端点控制器通信。我遇到的问题是它返回 xml 而不是 json。据我了解,您需要传递如下所示的内容类型来确定返回类型,这就是我将其设置为 JSON 的原因。我对如何返回 json 感到困惑。

$.ajax({
    url: 'http://localhost:43043/api/main?ordernumber=33232048&category=damage',
    type: 'GET',
    contentType: "application/json; charset=utf-8",
    //data: {
    //    orderNumber: num,
    //    category: cat
    //},
    success:
           function (data) {
               var usingRoutData = document.URL;
               ko.applyBindings(new InvoiceViewModel(data));
           },

    error: function () {
        alert('failure');
    }

});

【问题讨论】:

  • 您需要dataType:"json" 作为 .ajax 调用的选项之一,当然还要确保服务器输出有效的 json 代码。
  • 您需要修改服务器端脚本并告诉 IT 返回 json。客户端不只是接收发送的任何内容并将其转换为您预期的数据格式。如果它返回 XML,那是服务器端问题,而不是客户端/javascript。
  • 一切都与内容协商有关,Web API 将在可用格式中选择最合适的。禁用除 JSON 之外的 Web api 配置上的所有格式或在 ajax 调用中添加 Accept 标头同样可以解决您的问题。这完全取决于您是始终需要 JSON 响应还是只需要一次。

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


【解决方案1】:

我认为您需要为 get 请求设置 Accept 标头设置内容类型标头实际上没有意义。

$.ajax({
    url: 'http://localhost:43043/api/main?ordernumber=33232048&category=damage',
    type: 'GET',
    headers: {'Accept':'application/json'}, 
    //data: {
    //    orderNumber: num,
    //    category: cat
    //},
    success:
           function (data) {
               var usingRoutData = document.URL;
               ko.applyBindings(new InvoiceViewModel(data));
           },

    error: function () {
        alert('failure');
    }

})

;

【讨论】:

    【解决方案2】:

    您是否尝试过设置 dataType 属性:

    数据类型:“json”,

    http://api.jquery.com/jQuery.getJSON/

    【讨论】:

    • 没有足够的代表来回复 Kevin B 的上述评论。他正在使用 Web API,默认情况下,它将返回客户端请求的类型(XML 或 JSON)。
    猜你喜欢
    • 2013-03-21
    • 1970-01-01
    • 1970-01-01
    • 2013-04-30
    • 2014-12-15
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2018-04-28
    相关资源
    最近更新 更多