gpt4 book ai didi

jquery - 在一个 HttpResponse 中返回两件事

转载 作者:行者123 更新时间:2023-12-01 03:27:15 24 4
gpt4 key购买 nike

我正在尝试跨ajax调用实现分页。当用户想要查看下 x 个结果时,页面不应刷新。

这是我的问题。返回 QuerySet 非常简单。我就是这样做(sumaJson 是自定义的)

data = serializers.serialize('sumaJson', result_page.object_list, relations=('first_major', 'country_of_origin', 'second_major'))
return HttpResponse(data, mimetype="application/json")

现在我也想返回类似的东西

result_page.has_previous()
result_page.has_next()
result_page.paginator.count

等等。我一辈子都不知道如何在一个回复中同时表达这两点。我无法将此信息添加到 result_page.object_list 因为序列化程序会失败。如果我做类似的事情

simplejson.dumps(paging_info + result_page.object_list)

那么在 javascript 中,QuerySet 不再是一个对象列表,而是一串无法用

解释的大字符串
$.each(data.data, function(index, item){

我尝试了一些糟糕的技巧,例如创建一个假对象并将其放入 object_list 中,序列化它然后删除该对象。这使我能够获取数据。但是,我不想创建和删除虚假对象。

我不想干扰序列化器。一旦我获取 querySet 以获取分页信息,我就不想发送第二个 ajax 请求。

我错过了什么吗?有没有一种简单的方法可以在一个回复中同时传达这两个信息?谢谢!

最佳答案

当我序列化对象集合时,我通常将分页信息包含在响应正文本身中。如果我有 50 个对象,我想每页提供 10 个对象,那么 JSON 将如下所示:

{
"count": 50,
"objects": [
{
...
}
],
"pages": {
"count": 5,
"current": "http://api.example.com/objects/?page=3",
"first": "http://api.example.com/objects/",
"last": "http://api.example.com/objects/?page=5",
"next": "http://api.example.com/objects/?page=4",
"previous": "http://api.example.com/objects/?page=2"
}
}

关于jquery - 在一个 HttpResponse 中返回两件事,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3818436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com