内容は、XMLHttpRequest を普通に工夫されていますが、特徴として Metro(JS) の then メソッド で結果の処理を行う事になっています。then メソッドは、Promise オブジェクトのメソッドで(実際 の所在もはもう少し奥で複雑ですが) complete, error, progress の callback が登録されるように なっています。 そして、それらは XMLHttpRequest では、req.readyState === 4 で req.status が 200〜300 で 正常終了扱いで、それら以外は error が実行されます。引数には、いずれも XMLHttpRequest オブ ジェクトが渡されています。( 300 は含まない ) オプションは、以下の通りです。 1) options.type // "GET" または "POST" ( 省略は "GET" ) 2) options.url 3) options.user 4) options.password 5) options.responseType : いくつかあるようですが、まだ不確定 ( ここでは "" : 空文字 ) 6) options.headers : JSON 7) options.data : send で送るデータ ※ ソースから解りますが、に非同期のみです。
(function () { WinJS.Namespace.define("WinJS", { xhr: function (options) { var req; return new WinJS.Promise( function (c, e, p) { req = new XMLHttpRequest(); req.onreadystatechange = function () { if (req.readyState === 4) { if (req.status >= 200 && req.status < 300) { c(req); } else { e(req); } req.onreadystatechange = function () { }; } else { p(req); } }; req.open( options.type || "GET", options.url, // Promise based XHR does not support sync. // true, options.user, options.password ); req.responseType = options.responseType || ""; Object.keys(options.headers || {}).forEach(function (k) { req.setRequestHeader(k, options.headers[k]); }); req.send(options.data); }, function () { req.abort(); } ); } }); })();
サンプルではこんなふうに使っていました
function makeXhrCall(url, callback) { sdkSample.displayError(""); document.getElementById("scenario3Output").innerHTML = ""; WinJS.xhr({ url: url }).then( function (result) { callback(result.responseXML, result.status); }, function (result) { callback(null, result.status); }); }
|
【Windows8 Metro(JS/C#)の最新記事】
- Win8(JS Metro)の『分割・・・』テンプレートにアプリバーを追加して、新しいページを定義する
- Win8(JS Metro)の『分割・・・』テンプレートを使って RSS を収集するサンプル
- Win8(JS Metro)の『分割・・・』テンプレートから追加のページを定義する方法
- 『分割アプリケーション』/ Win8(Metro)テンプレートのテンプレートたる意味
- Windows8(JavaScript Metro Style) 関連リンク
- Windows8 で SkyDrive にアップロードするサンプル
- Windows8 Metro(JS) で LiveSDK を使って signin してテキスト表示するだけのサンプルコードの実行
- Windows8 Metro(JS) でのカメラの利用は簡単ですが、まだ製品版では無いせいか他の処理と同時に動かすと、問題もあるようです
- Windows8 Metro(JS) で Three.js の 3D モデル表示(Canvas)を行う
- Windows8 Metro(JS)の画面切り替えが解る、jQuery とのコラボ
- Google ドキュメントを使ってソースコード配布と解説
- 余計なものを全て排除した Win8 Metro(JS) アプリの画面遷移
- querySelectorAll(結果はNodeList) と forEach( Array のメソッド ) の動作確認コード
- Win8 Metro(JS) のクラス定義用クラスでの記述仕様で、getter が存在します
- Win8 Metro で画面の表示変更は、画面部分(?)オブジェクトの入れ替えを自分で行います
- Win8 Metro(JS) : 印刷処理