Ниже блок кода запрашивает у сервера скорректированный остаток на счете после ввода пользователем количества в поля количества, цены и оплаты. Добавление --10
к полю приведет к ошибке на сервере. Вот почему я добавил проверку NaN adjustment === adjustment
. Таким образом, он должен отправлять запрос только в том случае, если сумма корректировки является числом. По какой-то причине, однако, я все еще получаю странные вещи, отправляемые на сервер, такие как --10
...Тестирование Javascript для NaN
По сути, мне нужно отправить запрос только в том случае, если это фактически номер.
var quantity = $("#id_quantity").val();
var price = $("#id_price").val();
var payment = $("#id_payment_amount").val();
var adjustment = quantity * price - payment;
// Don't send if Not a number (NaN).
if (adjustment === adjustment) {
$.get("/balance_after_adjustment", {amount: adjustment}, function(response) {
$("span").text(response);
});
}
'IsNaN() ': https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN и' Number.isNaN() ': https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN – Ian
Вы получаете значения как строки, а затем выполняете математический расчет на них. Я бы предложил разбор каждого элемента индивидуально с помощью 'parseFloat' или' parseInt', таким образом вы получите хорошие номера сначала, прежде чем пытаться делать какие-либо вычисления на них. –
Тем не менее, не забудьте проверить 'amount' на стороне сервера. В противном случае некоторый «хакер» может преодолеть проверку Javascript. – Alex