Как я могу проверить, вернул ли jQuery GET какой-либо HTML? - PullRequest
0 голосов
/ 18 февраля 2012

В настоящее время у меня есть следующий Javascript, и я не уверен, что я должен вставить в закомментированную область, чтобы проверить, возвращает ли get какой-либо HTML?

$('#load-more').click(function() {
  $.get('/load/friend/2'/, function(data) {

    // If there is HTML returned, then $('#load-friend').append(data)
    // Else $('#load-global').append(data)

   });
});

Запросы get /load/friend/2, которыевозвращает объект HttpResponse в Django, который был обработан с помощью render_to_response(template, context, RequestContext(request)).

Шаблон Django выглядит следующим образом:

{% for review in reviews %}
  // Code
{% endfor %}

Поэтому, когда $ .get получает / load / friend /2 и reviews = [], я полагаю, он должен вернуть пустой HTML-документ?

1 Ответ

1 голос
/ 19 февраля 2012

В контроллере Django, если reviews пусто, вернуть код состояния http вместо шаблона представления:

if not reviews:
    # 204 = "no content"
    return HttpResponse(status=204)

В JavaScript используйте общую функцию jQuery AJAX чтобы определить обратные вызовы:

$('#load-more').click(function() {
    $.ajax({
        url: '/load/friend/2',
        type: 'GET',
        dataType: 'HTML',
        success: function (data, textStatus, jqXHR) {
            $('#load-friend').append(data);
        },
        statusCode: {
            204: function () {
                $('#load-global').append('<p>No reviews found.</p>');
            }
        }
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...