简单的jQuery模板示例问题

时间:2011-01-25 18:23:31

标签: jquery json jquery-templates

我正在使用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数组显示为字符串。模板不起作用。

答案必须简单。

1 个答案:

答案 0 :(得分:2)

我认为你只是混淆了ResponsesResponseTemplate

$("#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}}