使用jquery变量来获取特定的ajax请求

时间:2015-12-16 18:29:10

标签: jquery python ajax django

截至目前,当前代码在js警报中呈现Job.objects.all()是预期的。但我希望能够将var jobnum传递到我的视图中并根据此过滤Job.objects.all。在json中有jobnum键和它们的值。我希望能够将与jobnum相关的所有数据提取到ajax请求中。

我尝试过像a = Job.objects.GET(jobnum=jobnum)这样的事情 和a = Job.objects.GET(jobnum=request)以及我不记得的许多其他事情。我得到的最接近的是我在下面显示的内容:

我的观点:

def api(request):
  a = Job.objects.all()
  data = serializers.serialize('json', a)
  data = json.loads(data)
  if request.is_ajax():  
    return HttpResponse(data)
  else:
    data = serializers.serialize('json', a)
    return HttpResponse(data)

我的jquery:

$('.test').click(function(){
    var jobnum = $(this).data('jobnum');
    console.log(jobnum)
    $.ajax({
        url: "api",
        type: 'get', //this is the default though, you don't actually need to always mention it
        data: {'jobnum':jobnum},
        success: function(data) {
            alert(data);
        },
        failure: function(data) { 
            alert('Got an error dude');
        }
    });     
});

1 个答案:

答案 0 :(得分:1)

要获取jobnum中的所有作业,您必须使用.filter,因为.get只返回一个对象

所以在你的代码中添加

jobnum = request.GET.get('jobnum')
job_list = Job.objects.filter(jobnum=jobnum)

将您需要执行的数据序列化,如下所示:

job_json = job_list.values()

因此您的观点将如下所示:

def api(request):
  jobnum = request.GET.get('jobnum')
  job_list = Job.objects.filter(jobnum=jobnum)
  json_data = job_list.values()
  return HttpResponse(json_data)