javascript SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
Primary tabs
Текст ошибки
SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
Сохраняем данные формы, чтобы передать их с помощью ajax.
Ошибка появляется при попытке передать из формы float.
$('.create_sale_payment_notification').click(function (e) {
e.preventDefault();
e.stopPropagation();
let formData = new FormData();
formData.set('payment_date', $('.payment_date').val());
// вот в этой строке ошибка
formData.set('sum', $('.payment_sum').val());
formData.set('number', $('.order_number').val());
$.ajax({
url: /url,
type: 'POST',
data: formData,
async: true,
success: function () {
// ...
},
error: function (message) {
// ...
},
cache: false,
contentType: false,
processData: false
});
});Решение
- В json не упаковывается float. Совсем.
Выход - переводить float в string или integer. В моём случае выберем integer, т.к. число - денежная сумма и всё равно нам нужно будет её перевести в копейки. Если знаков после запятой больше двух, их округляем с помощью. Math.floor().formData.set('sum', Math.floor($('.payment_sum').val() * 100)); - Также получим ошибку, пытаясь умножить $('.payment_sum').val() * 100, если пользователь использует в качестве разделителя запятую. Необходимо заменить её на точку:
formData.set('sum', $('.payment_sum').val().replace(",", ".") * 100);
Источники
- https://github.com/nlohmann/json/issues/98
- http://qaru.site/questions/1137299/nan-in-multiplication
- http://qaru.site/questions/16474113/parse-float-with-decimals-to-json-in-javascript-also-for-1-as-100
- https://habr.com/ru/post/312880/#s2
- Log in to post comments
- 2939 reads