私のWin8アプリでは、空白のテンプレートに基づいて、検索コントラクトを正常に追加しました。まだデータにリンクしていないにもかかわらず、機能しているようです。そのため、今のところ、アプリで任意の用語を検索すると「結果が見つかりません」というメッセージが表示されたsearchResultsページに移動するだけです。これは、最初に期待していたことです。
ここで、データベースをsearchResults.jsファイルにリンクして、データベースにクエリを実行できるようにします。検索契約の範囲外で、Dbをテストして接続しましたが、機能します。を使用してこれをWinJS.xhr
実行し、Webサービスに接続します。Webサービスはデータベースにクエリを実行し、JSONオブジェクトを返します。
私のテストでは、URLをハードコーディングしただけですが、2つのことを行う必要があります。DBを検索コントラクトコードに接続するためのテストWinJS.xr
データを移動し、次に、ハードコードされたURLをユーザーの検索用語を受け入れる動的URLに変更します。
これまでのところ、Win 8検索について私が理解していることから、検索契約の実際のデータクエリ部分は次のとおりです。
// This function populates a WinJS.Binding.List with search results for the provided query.
_searchData: function (queryText) {
var originalResults;
// TODO: Perform the appropriate search on your data.
if (window.Data) {
originalResults = Data.items.createFiltered(function (item) {
return (item.termName.indexOf(queryText) >= 0 || item.termID.indexOf(queryText) >= 0 || item.definition.indexOf(queryText) >= 0);
});
} else {`enter code here`
originalResults = new WinJS.Binding.List();
}
return originalResults;
}
});
このセクションに転送する必要のあるコードは次のとおりです。今、私は現在上記のコードブロックを理解しておらず、それを行ごとに分類するための適切なリソースを見つけていないことを認めなければなりません。それは本当に素晴らしいでしょうが、誰かが助けることができれば!以下の私のコードは、基本的にそれを統合してから、searchStringをユーザーの検索語と等しくしたいと思っています。
var testTerm = document.getElementById("definition");
var testDef = document.getElementById("description");
var searchString = 2;
var searchFormat = 'JSON';
var searchurl = 'http://www.xxx.com/web-service.php?termID=' + searchString +'&format='+searchFormat;
WinJS.xhr({url: searchurl})
.done(function fulfilled(result)
{
//Show Terms
var searchTerm = JSON.parse(result.responseText);
// var terms is the key of the object (terms) on each iteration of the loop the var terms is assigned the name of the object key
// and the if stament is evaluated
for (terms in searchTerm) {
//terms will find key "terms"
var termName = searchTerm.terms[0].term.termName;
var termdefinition = searchTerm.terms[0].term.definition;
//WinJS.Binding.processAll(termDef, termdefinition);
testTerm.innerText = termName;
testDef.innerText = termdefinition;
}
},
function error(result) {
testDef.innerHTML = "Got Error: " + result.statusText;
},
function progress(result) {
testDef.innerText = "Ready state is " + result.readyState;
});