Я получаю ответ с некоторыми значениями из базы данных, но когда я собираюсь подсчитать сумму, используя некоторые из этих значений, выводится «NaN», пожалуйста, скажите мне, как я могу решить эту проблему. Спасибо
$.ajax({
url:"{{ route('autocomplete.purchasetable') }}",
method:"POST",
data:{query:material, _token:_token},
success:function(data){
//console.log(data);
data = JSON.parse(data);
console.log(data);
$.each(data, function(key, value) {
console.log(value.id, value.unit_price);
var matid = value.id;
var unitprice = value.unit_price;
var cost = unitprice * quantity;
var tr = '<tr><td></td><td>'+matid+'</td> <td name="name"><input type="text" name="materialName" value="'+material+'"></td> <td name="sex"><input type="text" name="materialID" value="'+quantity+'"></td> <td name="tel"><input type="text" name="materialID" value="'+unitprice+'"></td> <td><input type="text" name="cost" value="'+cost.toFixed(2)+'"></td><td> <button type="button" name="add" id="delete-btn" class="btn btn-sm btn-rounded btn-danger delete-btn"><i class="far fa-trash-alt"></i></button></td></tr>';
$('#item_table').append(tr);
var total = total + unitprice * quantity;
alert(total);
});
}
});
Значение итога всегда будет неопределенным. Так как вы пытаетесь использовать undefined в математических операциях, в результате вы получите NaN. Решение было бы объявить var total
вне цикла for в обратном вызове ajax. И инициализировать его до 0.
NaN означает «не число». Где-то вы пытаетесь использовать значение в качестве числа, где JavaScript не распознает его как число. Вы можете попробовать проанализировать его как число с помощью parseInt (), хотя может быть лучше убедиться, что значения, которые вы пытаетесь использовать в действительности, являются числовыми.
Было бы полезно посмотреть, что получает ajax-запрос от сервера, чтобы мы могли увидеть, действительно ли есть какие-либо значения, которые не являются числовыми.