我正在使用最新版本的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 Content-Type application / json 日期星期五,2012年12月21日08:32:58 GMT 到期-1 Pragma no-cache 服务器Microsoft-IIS / 8.0 X-AspNet-Version 4.0.30319 X-Powered-By ASP.NET X-SourceFiles =?UTF-8 2 B 4 YzpcdXNlcnNcanVzdGluXGRvY3VtZW50c1x2aXN1YWwgc3R1ZGlvIDIwMTJcUHJvamVjdHNcVHJlYXNTdXJlLldlYlxUcmVhc1N1cmUuV2ViXGFwaVx0cmFuc2FjdGlvbnNcVHJhbnNhY3Rpb25zQnlNb250aA ==?= 请求标题 接受application / atomsvc + xml; q = 0.8,application / json; odata = verbose; q = 0.5, / ; q = 0.1 Accept-Encoding gzip,deflate Accept-Language en-US,en; q = 0.5 连接保持活着 Cookie glimpseState = null; glimpseLatestVersion = 0.87; glimpseOptions = NULL; glimpseClientName = NULL 主机localhost:42039 MaxDataServiceVersion 2.0 Referer http:// {localhost} / dashboard / test User-Agent 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
}
]
答案 0 :(得分:1)
应该检查两件事:
jquery或q required
如果你想使用promise接口(然后/ 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的格式。
答案 1 :(得分:0)
请抓住并记录失败分支。 。然后() .fail(函数(原因){的console.log(原因);}) 如果发生任何异常,也可以使用chrome,所以请尝试。