如何检查jQuery GET是否返回任何HTML?

时间:2012-02-18 18:15:34

标签: jquery ajax django

我目前有以下Javascript,我不确定我应该在评论区域中检查是否返回任何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)

   });
});

获取查询/load/friend/2,它返回Django中使用HttpResponse呈现的render_to_response(template, context, RequestContext(request))对象。

Django模板如下所示:

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

所以当$ .get检索/ load / friend / 2和reviews = []时,我相信它应该返回一个空的HTML文档?

1 个答案:

答案 0 :(得分:1)

在Django控制器中,如果reviews为空,则返回http状态代码而不是视图模板:

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

在JavaScript中,使用jQuery的常规AJAX function来定义回调:

$('#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>');
            }
        }
    });
});