在AJAX请求后显示HttpResponse的结果

2024-05-20 10:45:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个页面,在初始加载显示所有自由职业者从数据库。我有一个函数,它创建一个POST请求,传递三个select元素的数据,从数据库中检索特定的匹配项。在

$(document).ready(function() {
    $('select.university').change(function(){
        $.ajax({
                type: 'POST',
                url: '#',
                data: {
                university: $('select.university').val(),
                skill: $('select.skill').val(),
                city: $('select.city').val()
                },
                dataType: 'html'
         });
         return false;
    });
});

我的视图获取数据并通过HttpResponse返回:

^{pr2}$

特定的获取肯定正在执行,因为我可以在调试器中单步执行它,但HTML中没有任何更改。我错过了什么?在


Tags: 数据函数数据库元素cityfunctionval页面
3条回答

您需要将dataType设置为“json”,然后在您的视图中:

return HttpResponse(content=json.dumps({'freelancers': freelancers,
                     'skills': skills,
                     'universities': universities,
                     'cities': cities}))

在你看来

from django.utils import simplejson

def browse_freelancers(request):
     ...
     data = simplejson.dumps({'freelancers': freelancers,
                     'skills': skills,
                     'universities': universities,
                     'cities': cities})
     return HttpResponse(data)

如果您使用的是django1.7+,那么可以使用^{},而不是{}。在

^{pr2}$

您需要在$.ajax()中设置success函数。在

$.ajax({
    type: 'POST',
    ...
    success: function(data) {
        alert(data);
    }
});

另一种可能的结构:

if request.is_ajax() and request.method == 'POST':

    # ...

    response = {'freelancers': freelancers,
                     'skills': skills,
                     'universities': universities,
                     'cities': cities}

    return JsonResponse(response)

else:
    # ...   

相关问题 更多 >