我收到来自数据库的一些值的响应,但是当我要使用其中一些值计算总数时,它会输出"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);
});
}
});
total 的值将始终未定义。由于您尝试在数学运算中使用未定义,因此您确实会得到 NaN 作为结果。解决方案是在 ajax 回调的 for 循环之外声明var total
。并将其初始化为 0。
NaN 的意思是"不是一个数字"。在某个地方,您尝试将值用作数字,而javascript无法将其识别为数字。您可以尝试使用 parseInt(( 将其解析为数字,尽管最好确保您尝试使用的值是数字。
查看 ajax 查询从服务器获取的内容会很有帮助,这样我们就可以查看是否确实有任何非数字值。