在AJAX请求之后显示HttpResponse的结果

时间:2016-01-11 16:21:37

标签: jquery python ajax django

我有一个初始加载页面显示数据库中的所有自由职业者。我有一个创建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返回它们:

def browse_freelancers(request):
    if request.method == 'GET':
        ...
    else:
        skills = request.POST.getlist('skill')
        universities = request.POST.getlist('university')
        cities = request.POST.getlist('city')

        # fetch from database

        return HttpResponse({'freelancers': freelancers,
                         'skills': skills,
                         'universities': universities,
                         'cities': cities})

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

3 个答案:

答案 0 :(得分:3)

在你的观点中,

test.sh "$(awk -F'</?password>' 'NF>1{print $2}' file)"

如果您使用的是Django 1.7+,则可以使用JsonResponse代替from django.utils import simplejson def browse_freelancers(request): ... data = simplejson.dumps({'freelancers': freelancers, 'skills': skills, 'universities': universities, 'cities': cities}) return HttpResponse(data)

HttpResponse

您需要在from django.http import JsonResponse return JsonResponse({'foo':'bar'})

中设置success功能
$.ajax()

答案 1 :(得分:0)

您需要将dataType设置为&#39; json&#39;然后在你看来:

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

答案 2 :(得分:0)

另一种可能的结构:

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

    # ...

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

    return JsonResponse(response)

else:
    # ...