我正在开发基于HTML5,CSS和JavaScript等网络技术的OData客户端。
我想做的是以简单的方式缓存最新版本(V3)的OData Feed。
我可以使用HTML5的本地或会话存储来实现该功能。
但是,如果有任何缓存库,那么效率会更高。
我知道data.js,但它不能用于错误消息:“没有数据处理程序”
OData.defaultHttpClient.enableJsonpCallback = true;
OData.read("http://localhost/OData/OData.svc/GetDatasets", function (data) {
console.log(data);
},
function (err) {
console.log(err);
});
我用错误信息搜索了它,所以我修改了这样的代码。
var textHtmlHandler = {
read: function (response, context) {
var contentType = response.headers["Content-Type"];
if (contentType && contentType.indexOf("text/html") === 0) {
response.data = response.body;
} else {
odata.defaultHandler.read(response, context);
}
},
write: function (request, context) { }
}
OData.defaultHttpClient.enableJsonpCallback = true;
OData.read("http://localhost/OData/OData.svc/", function (data) {
console.log(data);
},
function (err) {
console.log(err);
},
textHtmlHandler);
现在它说:“ReferenceError”
我怀疑我的data.js代码是因为我不需要使用JSONP,因为它支持CORS。
$.ajax({
url: "http://cross-domain-address/OData/OData.svc?$format=json",
type: "GET",
crossDomain: true,
dataType: "json",
success: a,
error: b
});
function a(d) {
console.log(d);
}
function b(d) {
console.log(d);
}
你有什么想法吗?
您可以为OData Feed建议缓存库或更正代码。
答案 0 :(得分:1)
我为客户端开发了一个用于缓存数据的库。这是链接
答案 1 :(得分:0)
您可以使用J ayData library及其OData提供商 - OData cookbook with JayData来使用OData Feed 它在内部运行datajs,但为OData,WebSQL,SQLite和许多其他数据源提供相同的类型API - 因此您可以使用相同的语法将任何结果存储到浏览器中的dbs。
如果要在内存中缓存,可以尝试与JayData Pro一起打包的QueryCache module
免责声明:我是JayData开发团队的成员,随时可以了解有关库或OData的更多信息,希望我能够为您指出正确的博客帖子。