【问题标题】:Return multiple items from a Django View (ajax)从 Django 视图(ajax)返回多个项目
【发布时间】:2013-08-11 16:57:30
【问题描述】:

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

阿贾克斯:

 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)

前置语句不使用它正在接收的“消息”值,而只是插入字符串“成功”。 “data”参数处理正确。

【问题讨论】:

    标签: django jquery django-views


    【解决方案1】:

    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    
    }
    

    【讨论】:

    • 现在是 JsonResponse(而不是 HttpResponse)。
    • 只需执行:data = {'read': read, 'newest': newest} 然后:return JsonResponse(data)
    【解决方案2】:

    你错误地返回了 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);
            }},
    

    【讨论】:

      猜你喜欢
      • 2018-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-20
      • 2023-03-28
      • 1970-01-01
      • 2012-05-10
      相关资源
      最近更新 更多