こんにちは、これは .net の JSON Web サービスで MustacheJS を使用する最初の試みです
現在、私はこの基本的な例を設定して間違っていることを見つけることができないようです:
私のWebサービスは次の文字列を返しています:
[
{
"ShortDescription":"BOX",
"Description":"BOXING",
"Id":1
},
{
"ShortDescription":"EPL",
"Description":"ENGLISH PREMIER LEAGUE",
"Id":2
}
]
この Web サイトで構文を検証しました: http://json.parser.online.fr/
ここに私が使用しているHTMLコードがあります:
google.load("jquery", "1");
google.setOnLoadCallback(function () {
$(document).ready(
function () {
$.ajax({
url: "../data.asmx/geteagues",
type: "POST",
dataType: "json",
data: "",
contentType: "application/json; charset=utf-8",
success: function (data) {
var template = "<h1>{{ShortDescription}} {{Description}}</h1>";
var html = Mustache.render(template, data);
$('#sampleArea').html(html);
alert(html);
}
})
}
)
});
私は JavaScript があまり得意ではないので、JS コード全体を投稿しています。基本的には、Google から常に最新の JQuery バージョンをロードしてから、WS 呼び出しを実行したいと考えています。
これまでの問題は、次の行にブレークポイントを配置したときです。
var html = Mustache.render(template, data);
テンプレートが正常に設定されていることがわかります。データも同様で、上に投稿した値と同じ値ですが、.render 関数は次の値を返しています。
データが気に入らなかったようです。これまで見てきたインライン データの例はすべて、次のような構造になっています。
{
"repo": [
{ "name": "resque" },
{ "name": "hub" },
{ "name": "rip" },
]
}
そして、次のように定義されたテンプレート:
{{#repo}}
<b>{{name}}</b>
{{/repo}}
しかし、私のデータとの唯一の違いは、「レポ」のような「親」がないことです
サーバー側では、JSON.net と呼ばれる .net ライブラリを使用しており、コレクションがどのようにシリアル化されているかのドキュメントで:
james.newtonking.com/projects/json/help/html/SerializingCollections.htm
最終結果には、親ノードの名前が含まれていません。これは、Mustache テンプレートの定義から欠落しています。
[
{
"Name": "Product 1",
"ExpiryDate": "2000-12-29T00:00Z",
"Price": 99.95,
"Sizes": null
},
{
"Name": "Product 2",
"ExpiryDate": "2009-07-31T00:00Z",
"Price": 12.50,
"Sizes": null
}
]
これは私が見逃しているものですか?テンプレートを反復できるように、データから「レポ」親ノードを取得しますか?
お時間をいただきありがとうございます。
-ed