javascript SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

Текст ошибки

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
        });
    });

Решение

  1. В json не упаковывается float. Совсем.
    Выход - переводить float в string или integer. В моём случае выберем integer, т.к. число - денежная сумма и всё равно нам нужно будет её перевести в копейки. Если знаков после запятой больше двух, их округляем с помощью. Math.floor().
    formData.set('sum', Math.floor($('.payment_sum').val() * 100));
  2. Также получим ошибку, пытаясь умножить $('.payment_sum').val() * 100, если пользователь использует в качестве разделителя запятую. Необходимо заменить её на точку:
    formData.set('sum', $('.payment_sum').val().replace(",", ".") * 100);

Источники