jqote返回undefined

时间:2011-12-16 23:11:46

标签: jquery ajax json jqote

我正在尝试使用json和jQote中的新数据更新HTML表。

我有一个相当简单的jqote模板:

<script type="text/html" id="template">
    <![CDATA[
        <tr>
            <td><%= this.customer_id %></td>
            <td><%= this.campaign_id %></td>
            <td><%= this.cname %></td>
            <td><%= this.create_date %></td>
            <td><%= this.phone %></td>
            <td><%= this.sname %></td>
            <td><%= this.reminder %></td>
            <td><%= this.appt_date %></td>
            <td><%= this.note %></td>
            <td><%= this.unread %></td>
        </tr>
    ]]>
</script>

这是我的JSON:

[{
    "customer_id": "2081",
    "campaign_id": "812",
    "cname": "Jeff",
    "create_date": "3 days ",
    "phone": "1111111111",
    "sname": "Massage Appointment",
    "reminder": "0",
    "appt_date": "0",
    "note": "",
    "unread": "2"
}]

这是我的jQuery:

$.ajax({
    type: 'POST',
    url: 'url/for/json/return',
    dataType: 'text/json',
    data: 'huh',
    success: function(jsondata){
        row = $('#template').jqote(jsondata);
        $('#customers > tbody').html(row); 
    },
 }
});

ajax请求运行正常,jsondata有正确的数据存储在里面,但我的jQote标签都返回undefined。有谁看到我做错了什么?

2 个答案:

答案 0 :(得分:0)

我能够找到一个我需要做的工作示例。这是我使用的新jQuery:

var jsondata = $.getJSON('/url/for/json/return/ajax/', function(data) {
    row = $('#template').jqote(data);
    $('#customers > tbody').html(row);
}); 

答案 1 :(得分:0)

Jeff,通过POST获取的JSON data变量只是一个字符串。在将其移交给jQote之前,您需要使用$.parseJSON对其进行解析。另一种可能性 - 就像你已经想到的那样 - 是使用jQuery的$.getJSON方法自动解析响应。

如果你正在使用jQote2和jQuery 1.4.1或更高版本,你应该像这样重写你的脚本:

$.ajax({
    type: 'POST',
    url: 'url/for/json/return',
    dataType: 'text/json',
    data: 'huh',
    success: function(jsondata){
        var data = $.parseJSON(jsondata);
        // Call the "substitute HTML" convenience method
        $('#customers > tbody').jqotesub('#template', data);
    }
});

有关$().jqotesub的说明,请查看jQote2 reference