jQuery и идентификаторы длинного целого

Я имею сталкивающийся со следующей проблемой:

В нашей базе данных у нас есть объекты с идентификаторами, как 4040956363970588323. Я пишу некоторый клиентский мастер на jQuery для взаимодействия с такими объектами. Клиент получает базовые данные о канавке объектов запрос Ajax, как:

$.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 = $('
  • '); var idf = $(''.format(data.pages[pidx].id)) var urlf = $(''.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)]
                }))
    

    Согласно Firebug, сервер отправляет правильные идентификаторы в данных, но console.log(..) вместо корректного идентификатора (4040956363970588323), выводов id 4040956363970588000.

    Почему это происходит?

    Без правильных идентификаторов, любого шанса, что мой мастер будет работать правильно :)

    6
    задан Jeff Walden 28 February 2010 в 10:39
    поделиться

    2 ответа

    Думаю, что-то не так при преобразовании в JSON. Когда вы пишете значение, вам, вероятно, придется заключить его в кавычки, чтобы убедиться, что оно обрабатывается как строка.

    9
    ответ дан 9 December 2019 в 20:42
    поделиться

    Мне кажется, это какая-то проблема с переполнением.

    Согласно в этом обсуждении здесь, на SO, JavaScript может обрабатывать только INT размером 2 ^ 64, что означает, что максимальное значение INT находится где-то около

    184467440737100000
    

    , что намного меньше, чем

    4040956363970588323
    

    EDIT: Извините , наибольшее точное целое число 2 ^ 53, но случай тот же.

    3
    ответ дан 9 December 2019 в 20:42
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: