2

HTML5、CSS、JavaScript などの Web テクノロジに基づいて OData クライアントを開発しています。

私がやりたいことは、最新バージョン (V3) である OData フィードを簡単な方法でキャッシュすることです。

HTML5 のローカル ストレージまたはセッション ストレージを使用して、この機能を実装できました。

ただし、キャッシュ ライブラリがあれば、より効率的です。

data.js は知っていますが、「no handler for data」というエラー メッセージで機能しません。

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」と表示されるようになりました

CORSをサポートしているため、JSONPを使用する必要がないため、data.jsコードを疑っています。

$.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 フィードのキャッシュ ライブラリを提案するか、コードを修正できます。

4

2 に答える 2

0

JayData ライブラリとその OData プロバイダーを使用して OData フィードを使用できます - JayData を使用したOData クックブック 内部では datajs で動作しますが、同じ型付き API を OData、WebSQL、SQLite、および他の多くのデータ ソースに提供します。同じ構文のブラウザ内データベース。

メモリにキャッシュしたい場合は、JayData Pro に同梱されているQueryCache モジュールを試すことができます

免責事項: 私は JayData 開発者チームのメンバーです。ライブラリまたは OData に関する詳細情報をお気軽にお寄せください。適切なブログ投稿をご案内できることを願っています。

于 2013-07-10T10:03:31.867 に答える