1

我正在尝试使用通过 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 标记都返回未定义。有谁看到我做错了什么?

4

2 回答 2

0

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

var jsondata = $.getJSON('/url/for/json/return/ajax/', function(data) {
    row = $('#template').jqote(data);
    $('#customers > tbody').html(row);
}); 
于 2011-12-20T01:13:54.513 回答
0

Jeff,data通过 POST 获取的 JSON 变量只是一个字符串。在将其交给 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 参考

于 2011-12-21T08:46:46.513 回答