我面临着下一个问题:

在我们的数据库中,我们有带有 ID 的对象,例如 4040956363970588323。我正在写一些客户端向导 jQuery 用于与此类对象交互。客户端通过以下方式接收有关对象的基本数据 阿贾克斯 请求,例如:

$.ajax({
        url: "/api/pages/",
        type: "get",
        dataType: "json",
        data: {"id": site_id},
        success: function(data){
            if (data.success){
                for (var pidx in data.pages){
                    console.log(data.pages[pidx].id);
                    var li = $('<li class="ui-widget-content"></li>');
                    var idf = $('<input type="hidden" id="pid" value="{0}"/>'.format(data.pages[pidx].id))
                    var urlf = $('<input type="hidden" id="purl" value="{0}"/>'.format(data.pages[pidx].url))
                    li.text(data.pages[pidx].title);
                    li.append(idf);
                    li.append(urlf);
                    $("#selectable_pages_assign").append(li);
                }
                pages_was = $("#selectable_pages_assign>li");
            }
            else
                 updateTips(data.message);
        },
        error: function(){
             updateTips("Internal erro!");
        }
})

所以,正如你所看到的,我发送的数据如下 JSON 对象(一些服务器代码):

return HttpResponse(dumps({
                        "success": True,
                        "pages": [{"id": page.id, "title": page.title, "url": page.image} for page in Page.objects.filter(site = site)]
            }))

根据 萤火虫, ,服务器在数据中发送正确的ID,但是 console.log(..) 输出不是正确的 id (4040956363970588323) id 4040956363970588000.

为什么会出现这种情况?

如果没有正确的 ID,我的向导就有可能正常工作:)

有帮助吗?

解决方案

我的猜测是一些在转换到JSON脚麻。当你写的值,你可能需要把引号它,确保它当作一个字符串。

其他提示

对我来说,这看起来像是某种溢出问题。

根据 这次讨论 所以,JavaScript 只能处理大小为 2^64 的 INT,这意味着最大 INT 大约在某个地方

184467440737100000

这远小于

4040956363970588323

编辑:抱歉,最大的精确整数是 2^53,但情况是一样的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top