私はこのブログ投稿をガイドとして使用しており、jQueryとjTemplatesを使用してJSON応答をテンプレートに詰め込む方法を詳しく説明しています。
私の問題は、返されたフィールドの1つ(Descriptionという名前)にHTMLが含まれているのに、HTMLブラケットが\u003Cと\u003eにエンコードされていることです。
サーバーが返すHTML([説明]フィールド)は次のとおりです。
<a href="/en/Yokota/User/Show/Chad">Chad</a> updated their ad, <a href="/en/Yokota/Ad/Show/100">Validation Test Ad Again</a>, @<a href="/en/Yokota">Yokota</a>
JSON応答は次のようになります。
[{"TypeOfActivity":"0","Description":"\u003ca href=\"/en/Yokota/User/Show/YokotaTour\"\u003eYokotaTour\u003c/a\u003e posted \u003ca href=\"/en/Yokota/Ad/Show/166\"\u003eOne of the best for sure\u003c/a\u003e for sale @\u003ca href=\"/en/Yokota\"\u003eYokota\u003c/a\u003e","DateHappened":"6/23/2010 12:26:55 AM"}]
「\u003c」または「\u003e」に注意してください。それらはUnicodeエスケープのように見えますが、なぜそれが起こっているのですか?JSON応答を呼び出すjQueryは次のとおりです。
$.getJSON("<%= Url.Action("List", "Activity") %>",
function(data){
$("#aLog").setTemplate($("#templateHolder").html());
$("#aLog").processTemplate(data);
});
アップデート
これは、ページが完全に読み込まれたときのソースの外観です(Firefoxでは[表示]> [ページソース])。
<a href="/en/Yokota/User/Show/Chad">Chad</a> updated their ad, <a href="/en/Yokota/Ad/Show/100">Validation Test Ad Again</a>, @<a href="/en/Yokota">Yokota</a>
午前3時が近づいているせいかもしれませんが、困惑しています...どんな助けでも大歓迎です-ありがとう!
アップデート2
public JsonResult List()
{
IList<ActivityContract> contracts = new List<ActivityContract>();
var activityList = _db.Activity.ByBaseID(CurrentBase.BaseID).OrderByDescending(a => a.DateHappened);
foreach (var a in activityList) {
contracts.Add(new ActivityContract { TypeOfActivity = a.TypeOfActivity.ToString(), Description = a.Description, DateHappened = a.DateHappened.ToString() });
}
return Json(contracts, JsonRequestBehavior.AllowGet);
}