从Django View(ajax)返回多个项目

时间:2013-08-09 17:13:47

标签: django jquery django-views

我的页面上有一个使用ajax的函数。 ajax进入Django视图,然后可以为我返回某种数据。不幸的是,我现在只能让它返回一条数据。第二个作为字符串“success”返回。这是我的目标:

的Ajax:

 success: function(data, message) { 
            if(data === 'False'){
                    $('#mailsquare').css('background-color', '#A80000');
                    $('.dropdown-menu').prepend('<li class="message" id="{{item.id}}">'+message.substring(0,30)+'</li>');
            } else {
                    $('#mailsquare').css('background-color', '#1b1b1b');
            }
   },

查看:

@login_required
def checkMail(request):

    user = request.user.get_profile()

    i = inbox.objects.get(user = user)
    read = i.read

    new = i.message.order_by('created')[:1]

    return HttpResponse(read, new)

prepend语句不使用它正在接收的“message”值,而只是插入字符串“success”。正确处理“data”参数。

2 个答案:

答案 0 :(得分:4)

success方法的定义如下:

success: function(data, textStatus, jqXHR) { 

因此,message实际上是textStatus因此结果。

您需要正确地从视图中发送数据才能正常工作。

一种方法是:

@login_required
def checkMail(request):
    user = request.user.get_profile()
    read = inbox.objects.get(user = user).read    
    newest = i.message.order_by('created')[:1]

    return HttpResponse(simplejson.dumps({'read': read, 'newest': newest}))

和js

success: function(data, textStatus, jqXHR) { 
    var read = data.read;
    var newest = data.newest;
    //rest of the stuff    
}

答案 1 :(得分:0)

您错误地返回了ajax的数据

def answer(request):    
     # same you code
     payload = {'success':True,'param1': 'you_value', 'param2':'you_value2'}
     return HttpResponse(json.dumps(payload), content_type='application/json')

在Javascript中

success: function(data) { 
        if(data.success === false){
                alert(data.param1);
                alert(data.param2);

        } else {
                $('#mailsquare').css('background-color', data.param1);
                $('#mailsquare').html(data.param2);
        }},