ネットワークを利用して各種のデータをサーバーから受け取ったりする機能は、アプリ作成においてとても重要なものです。Windowsストアアプリを見てみると、サーバーと連携して必要な情報を取得し表示するようなアプリがとても多いことに気がつくでしょう。
JavaScriptでプログラミングをする場合、こうした処理を行おうとしたとき真っ先に思い浮かぶのは「
Ajax」でしょう。WindowsストアアプリはJavaScriptで作成できるので、JavaScriptに用意されている機能もひと通り使うことができます。
が、実を言えば、それとは別にちゃんとネットワークアクセスのための機能も用意されているのです。そちらを利用してネットワークアクセスをすることもできます。
JavaScriptのAjaxは、JavaScriptを使っている人の多くは利用したことがあるでしょう。既に使ったことのある機能ですから実装の仕方も悩むこともありません。ただ、Ajaxの処理を一から作るのは、意外と面倒くさいものです。このため、多くの人はjQueryなどのようなライブラリを併用して効率的にAjaxを使えるようにしているはずです。
Windowsストアアプリには各種の機能がライブラリとして用意されています。その中の機能を利用すると、非常にシンプルな形でネットワークアクセスを実装することができます。実装の簡単さを考えるなら、やはりWindowsアプリでは専用の機能を使ったほうが便利でしょう。
ネットワーク関連の機能はいくつかのものがありますが、もっとも基本となるのは
WinJSオブジェクトの「
xhr」というメソッドです。これはXMLHttpRequestをラップしたもので、以下のように利用します。
WinJS.xhr({ url: "アクセス先" }).done( 関数 );
xhrメソッドの引数には、必要な情報を連想配列の形にまとめたものを用意します。最低限必要となるのは「
url」という値で、ここでアクセス先のアドレスを指定します。その後の「
done」は、アクセス完了後に呼び出される処理を設定するメソッドで、ここに以下のようなメソッドを用意します。
function complete(result) {……引数から必要な情報を取り出し処理する……}
function error(result) {……引数から必要な情報を取り出し処理する……}
function.progress(result) {……引数から必要な情報を取り出し処理する……}
completeは、文字通りアクセス完了時に呼び出される処理を定義するものです。引数に渡される
resultはオブジェクトで、この中からアクセスに関する情報を取得できます。
errorは例外発生時に呼び出されるものです。また
progressは処理の実行中に呼び出されるものです。
これらはすべて用意する必要はなく、必要に応じて用意しておけば十分です。といっても、ネットワークアクセスしたのに結果を利用しない、ということはありえませんから、最低限でも
completeは用意することになるでしょう。複数のメソッドを用意する場合は、カンマで区切って記述しておけばOKです。