Asp.net web api 使用WebAPI和OData的JayData不';t运行回调

Asp.net web api 使用WebAPI和OData的JayData不';t运行回调,asp.net-web-api,odata,jaydata,Asp.net Web Api,Odata,Jaydata,我正在使用最新版本的JayData和RC for Asp.Net WebAPI OData。当我运行JavaScript函数从服务器获取数据时,我可以看到带有JSON数据的请求和响应。但是,.then()函数从不激发,因此UI不知道数据是从服务器返回的 这是我的JayData电话: (function(root) { var context = new Default.Container({ name: 'oData', oDataServiceHost:

我正在使用最新版本的JayData和RC for Asp.Net WebAPI OData。当我运行JavaScript函数从服务器获取数据时,我可以看到带有JSON数据的请求和响应。但是,.then()函数从不激发,因此UI不知道数据是从服务器返回的

这是我的JayData电话:

(function(root) {
    var context = new Default.Container({
        name: 'oData',
        oDataServiceHost: '../api/transactions'
    });

    $(function() {
        context.TransactionsByMonth.take(5).toArray().then(function(transactions) {
            transactions.forEach(function (transaction) {
                alert('Test');
            });
        });
    });
}(window));
以下是响应标题:

响应头 缓存控制无缓存 内容长度1811 内容类型应用程序/json 日期2012年12月21日星期五08:32:58 GMT 过期-1 Pragma无缓存 服务器Microsoft IIS/8.0 X-AspNet-Version 4.0.30319 X-Powered-By ASP.NET X-SourceFiles=?UTF-8?B?YZPCDXNLCNNCANVZDGLUXGRVY3VTZW50C1X2AXN1YWGC3R1ZGLVIDWIDIWMTJCUHJVAVAVADHNCHJLYXNTDXJLLLYLXUCMCVHC1N1CMUUV2VIXGFWAV0CMFUC2FGLVBNHJHBNNHY3RPB25ZQNLNB250AA== 请求头 接受application/atomsvc+xml;q=0.8,应用程序/json;odata=冗长;q=0.5,/;q=0.1 接受编码gzip,放气 接受我们的语言,嗯;q=0.5 连接保持活动状态 Cookie glimpseState=null;glimpseLatestVersion=0.87;glimpseOptions=null;glimpseClientName=null 主机本地主机:42039 MaxDataServiceVersion2.0 Referer http://{localhost}/dashboard/test 用户代理Mozilla/5.0(Windows NT 6.2;WOW64;rv:17.0)Gecko/20100101 Firefox/17.0

以下是答复:

[
  {
    "TransactionByMonthId": 1,
    "BeginningBalanceAmount": 5970.0,
    "FloatAmount": 8027.0,
    "InflowsAmount": 8607.0,
    "OutflowsAmount": -2057.0,
    "EndingBalanceAmount": 33345.0,
    "MonthOfYear": 12,
    "MonthOfYearName": "MonthOfYearName6136f9ba-95c3-4977-ab29-5ec2e2968c5f",
    "QuarterOfYear": 8,
    "YearNumber": 2012
  },
  {
    "TransactionByMonthId": 10,
    "BeginningBalanceAmount": 9201.0,
    "FloatAmount": 4723.0,
    "InflowsAmount": 4933.0,
    "OutflowsAmount": -2808.0,
    "EndingBalanceAmount": 9858.0,
    "MonthOfYear": 11,
    "MonthOfYearName": "MonthOfYearName7c407e0d-d730-43c3-aff6-d3e56313f992",
    "QuarterOfYear": 17,
    "YearNumber": 2012
  },
  {
    "TransactionByMonthId": 19,
    "BeginningBalanceAmount": 3151.0,
    "FloatAmount": 19.0,
    "InflowsAmount": 9340.0,
    "OutflowsAmount": -6118.0,
    "EndingBalanceAmount": 19958.0,
    "MonthOfYear": 10,
    "MonthOfYearName": "MonthOfYearName504ded96-a4e3-4492-ae22-98da7c9c2ba1",
    "QuarterOfYear": 26,
    "YearNumber": 2012
  },
  {
    "TransactionByMonthId": 28,
    "BeginningBalanceAmount": 3826.0,
    "FloatAmount": 7120.0,
    "InflowsAmount": 3341.0,
    "OutflowsAmount": -9360.0,
    "EndingBalanceAmount": 33617.0,
    "MonthOfYear": 9,
    "MonthOfYearName": "MonthOfYearName5fa907a3-b6a3-4a42-a53b-2229da6e1dc6",
    "QuarterOfYear": 35,
    "YearNumber": 2012
  },
  {
    "TransactionByMonthId": 37,
    "BeginningBalanceAmount": 6832.0,
    "FloatAmount": 4412.0,
    "InflowsAmount": 2462.0,
    "OutflowsAmount": -3726.0,
    "EndingBalanceAmount": 40857.0,
    "MonthOfYear": 8,
    "MonthOfYearName": "MonthOfYearNameb3f6a899-6201-418a-b020-31babb42123b",
    "QuarterOfYear": 44,
    "YearNumber": 2012
  }
]

请捕获并记录失败分支。 .然后() .fail(函数(原因){console.log(原因);})
此外,使用chrome,如果出现任何异常,您可以捕获,因此请也尝试。

请捕获并记录失败分支。 .然后() .fail(函数(原因){console.log(原因);})
此外,使用chrome,如果出现任何异常,您也可以捕获,因此请也尝试一下。

有两件事需要检查:

需要jquery或q

如果您想使用promise接口(then/fail),那么应该将jquery或q.js作为promise实现(JayData没有自己的promise实现)。如果使用q.js,还必须将jaydatamodules/qdeferred.js作为promise适配器(这与jquery无关)

给定的响应是WebAPI而不是OData


您复制的响应负载不是OData,它必须来自简单的WebAPI响应。因此,您需要来自JayData的WebAPI提供程序,而不是具有此格式的OData提供程序。如果您使用的是ASP.NET WebAPI OData软件包,则可能有一些连接不正确:此软件包将WebAPI响应有效负载格式更改为该OData的格式。

有两件事需要检查:

需要jquery或q

如果您想使用promise接口(then/fail),那么应该将jquery或q.js作为promise实现(JayData没有自己的promise实现)。如果使用q.js,还必须将jaydatamodules/qdeferred.js作为promise适配器(这与jquery无关)

给定的响应是WebAPI而不是OData


您复制的响应负载不是OData,它必须来自简单的WebAPI响应。因此,您需要来自JayData的WebAPI提供程序,而不是具有此格式的OData提供程序。如果您使用的是ASP.NET WebAPI OData软件包,那么有一些东西没有正确连接:此软件包将WebAPI响应负载格式更改为该OData的格式。

现在我可以从您使用firefox的标题中看到。请务必使用我们的补丁datajs。请注意,我们昨天发布了一个新版本,您可以在不使用odata的情况下使用webapi,但当然您也可以在odata上使用它。更多信息:jaydata.org/blog这似乎不是特定于jaydata的。这与WebApi OData格式化程序有关。请尝试使用map(),以便服务器只返回几个字段,这样您就有机会找出是哪个字段导致了问题。现在,我可以从您使用firefox的标题中看到。请务必使用我们的补丁datajs。请注意,我们昨天发布了一个新版本,您可以在不使用odata的情况下使用webapi,但当然您也可以在odata上使用它。更多信息:jaydata.org/blog这似乎不是特定于jaydata的。它与WebApi OData格式化程序有关。请尝试使用map(),以便服务器只返回几个字段,这样您就有机会找到导致问题的字段。