我正在使用jquery-tmpl
并收到以下JSON
数据,我在ASP.NET MVC3中用于表单验证:
{"Status":1,"Message":"Oh dear, what have you done. Check the list of errors dude!","Errors":["The Contents field is required.","The Date Created field is required.","The Date Updated field is required.","The Updated By field is required."]}
我的模板如下所示:
<script id="ResponseTemplate" type="text/x-jquery-tmpl">
{{each(i, error) Errors}}
<li>${error}</li>
{{/each}}
</script>
我的JSON
POST如下:
var data = {
Contents: "This is a test",
DateCreated: "",
DateUpdated: "",
UpdatedBy: "Ben"
};
$.ajax({
url: '@Url.Action("save", "note")',
data: JSON.stringify(data),
type: 'POST',
contentType: 'application/json',
dataType: 'json',
success: function (result) {
alert(result.Errors);
$("#Responses").tmpl(result).appendTo("#ResponseTemplate")
}
});
数据是正确的。警报将Errors数组显示为字符串。模板不起作用。
答案必须简单。
答案 0 :(得分:2)
我认为你只是混淆了Responses
和ResponseTemplate
:
$("#ResponseTemplate").tmpl(result).appendTo("#Responses");
这是您的示例(没有AJAX调用):http://jsfiddle.net/andrewwhitaker/GcqZX/
您也可以像这样编写模板:
<script id="ResponseTemplate" type="text/x-jquery-tmpl">
<li>${$data}</li>
</script>
并称之为:
$("#ResponseTemplate").tmpl(result.Errors).appendTo("#Responses");
(不确定它是否真的更好,但只是想指出在这种情况下你不必使用{{each}}
。