Проблема с данными jQuery (), трактующими строку как число

У меня есть MySQL BIGINT, который я храню в данных HTML5. Затем я пытаюсь получить доступ к этому значению и передать его через вызов AJAX.

<div data-id="211285677671858177">

И JavaScript:

var send_data = {
    id: '' + $(this).data('id')
}
$.post('/send.php', send_data);

Проблема в том, что JQuerydata Кажется, функция извлекает это значение как число с плавающей запятой, а не как строку. Поэтому добавление его к пустой строке не помогает, поскольку уже слишком поздно - оно уже округлено (в данном случае211285677671858180). Что я могу сделать, чтобы это исправить?

Ответы на вопрос(5)

Решение Вопроса

Это не случай "long int" действительно, число, которое вы получаете, является ближайшим доступным представлением в виде числа с плавающей запятой.

Во всяком случае, вы хотите значение в виде строки. процитироватьJQuery документы для.data (выделение мое):

Every attempt is made to convert the string to a JavaScript value (this includes booleans, numbers, objects, arrays, and null) otherwise it is left as a string. To retrieve the value's attribute as a string without any attempt to convert it, use the attr() method.

У меня была похожая проблема, когда идентификатор данных (буквенно-цифровой) преобразовывался с помощью .data (), в результате последние несколько символов преобразовывались во все нули. Потребовалось некоторое исследование, чтобы определить, что это ошибка в реализации jQuery .data ().

Ссылка:http://bugs.jquery.com/ticket/7579

Для того, чтобы получить идентификатор данных напрямую, я использовал непосредственно .attr (& quot; data-id & quot;), и это дало мне правильный идентификатор.

Попробуйте заключить значение атрибута данных в одинарные кавычки, если хотитеdata относиться к нему как к строке. Думаю, проблема в том, что у вас есть кавычки для удаления.

Нет такого понятия, как "длинное целое число" в JavaScript. Все числа являются 64-битными числами с плавающей запятой. Ваш номер там не может быть представлен точно в представлении IEEE-794 с плавающей запятой.

Единственный способ «исправить» это делается для превращения числа в строку в домене, которая может обрабатывать большие целочисленные значения.

попробуйте ввести его в строку:

id: '' + $(this).data('id').toString();

Ваш ответ на вопрос