XML ファイルからデータを公開するための独自のカスタム サーバーがあります。選択したブラウザで閲覧でき、Fiddler でデータを照会できますが、Jaydata (またはそのビルディング ブロックの 1 つ) は同じデータを取得できないようです。最も苛立たしいのは、私のコードがhereおよびhereにあるコードとほとんど同じである (または、これらのエラーを解決するために少し微調整した) ことです。これが私のスクリプトです:
<script type="text/javascript" src="/Scripts/jquery-1.8.3.min.js"></script>
<script type="text/javascript" src="/Scripts/datajs-1.0.3.js"></script>
<script type="text/javascript" src="/Scripts/jaydata.js"></script>
<script type="text/javascript" src="/Scripts/jaydataproviders/oDataProvider.js"></script>
<script type="text/javascript" src="/Scripts/Block.js"></script>
<script type="text/javascript">
var Context = new foo({
name: 'oData',
oDataServiceHost: 'http://localhost:xxx'
});
function createItemLI(user, id, css) {
var li = "<li></li>".append(name).addClass(css).data('id', id);
return li;
}
$.when($.ready, Context.onReady()).then(function () {
Context.Roots.toArray(function (roots) {
roots.forEach(function (root) {
$('#roots').append(
createItemLI(root.User, root.ID, 'root'));
});
});
});
</script>
Block.js は、JaySvcUtil.exe によって生成されたファイルです。.htm ファイルの本体には、単純な 1 つのみがあります。<ul id="roots"></ul>
プロジェクトを実行しようとすると、ページに何も表示されません。FireBug を使用すると、「HTTP 要求が失敗しました」というメッセージが表示されます。requestUri はhttp://localhost:xxx/Roots
で、手動で参照すると機能しますが、StatusCode は 0、statusText は空の文字列などです。私はフィドラーを見てきましたが、それはまさに私が期待したものです。
何らかのフラグを設定する必要があると思いますが、私が見つけたチュートリアルはどれも役に立ちませんでした。それは箱から出してすぐに動作すると想定されており、私も単純な読み取りアクセスが簡単に得られることを期待していました。
アップデート:
Internet Explorer は適切なデータを JSON として受信していることがわかりますが、まだ必要なデータが入力されていませんroots
。FireFox では、GET 要求が OPTION に変更されているため、"501 not implemented" エラーが返されます。WCF サービスとして開始したプロジェクトのように、web.config ファイルはありません。これは Visual Studio 2010 の単なるコンソール アプリです。私の質問は、「JayData を介してクロスドメインの動作をより適切に指定するにはどうすればよいですか?」になると思います。