2012-12-21 88 views
1

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

这里是我的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 Expires -1 Pragma no-cache 服务器Microsoft-IIS/8.0 X-AspNet-Version 4.0.30319 X供电-通过ASP.NET X-SourceFiles = UTF-8乙YzpcdXNlcnNcanVzdGluXGRvY3VtZW50c1x2aXN1YWwgc3R1ZGlvIDIwMTJcUHJvamVjdHNcVHJlYXNTdXJlLldlYlxUcmVhc1N1cmUuV2ViXGFwaVx0cmFuc2FjdGlvbnNcVHJhbnNhY3Rpb25zQnlNb250aA == = 请求头 接受应用/ atomsvc​​ + xml的;????Q = 0.8,应用/ JSON;的OData =冗长; Q = 0.5,/; q = 0.1 Accept-Encoding gzip,deflate Accept-Language en-US,en; q = 0.5 Connection keep-alive Cookie glimpseState = null; glimpseLatestVersion = 0.87; glimpseOptions = NULL; glimpseClientName = NULL 主机本地主机:42039 MaxDataServiceVersion 2.0 引用站点的http:// {本地主机} /仪表板/测试 用户代理的Mozilla/5.0(Windows NT的6.2; WOW64; RV:17.0)壁虎/ 20100101火狐/ 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 
    } 
] 

回答

0

请赶上太日志故障分支。 .then() .fail(function(reason){console.log(reason);}) 如果发生异常,也可以使用chrome来捕捉,所以请尝试一下。

+0

现在我可以从标题中看到您使用的是Firefox。请确保使用我们修补过的datajs。 –

+0

请注意,我们昨天发布了一个新版本,您可以使用webapi而不使用odata,但当然您也可以将它与odata一起使用。更多信息:jaydata.org/blog –

+0

这似乎不是JayData特有的。它与WebApi OData格式化程序有关。 –

1

有迹象表明,应检查两件事情:

的jQuery或q需要

如果你想使用的承诺接口(当时/失败),那么你应该包括的jQuery或q.js作为承诺实现(JayData没有自己的承诺实现)。如果你使用q.js,你还必须包含jaydatamodules/qdeferred.js作为promise适配器(这不需要做jquery)。

鉴于响应的WebAPI没有OData的

复制的响应有效载荷不OData的,它必须从一个简单的WebAPI响应到来。所以你需要JayData的WebAPI提供者而不是这种格式的OData提供者。如果您使用的是ASP.NET WebAPI OData包,则某些内容的连接不正确:此包将WebAPI响应负载格式更改为该OData的格式。