возвращение jqote не определено - PullRequest
1 голос
/ 17 декабря 2011

Я пытаюсь обновить таблицу HTML, добавив новые данные через json и используя jQote.

У меня довольно простой шаблон 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 возвращаются неопределенными.Кто-нибудь видит, что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 21 декабря 2011

Джефф, переменная JSON data, полученная через POST, является просто строкой. Вам нужно проанализировать его с $. ParseJSON перед передачей его в jQote. Другая возможность, как вы уже поняли, это использовать метод 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 .

.
0 голосов
/ 20 декабря 2011

Мне удалось найти рабочий пример того, что мне нужно было сделать.Вот новый jQuery, который я использовал:

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