我有一个添加到购物车页面,其中显示添加到购物车的所有商品。还提供了编辑每个产品数量的选项。编辑数量率时应该更改。但小部件不显示。以下代码用于更新控制器中的值:
public ActionResult udateCart(int id, int preview, int Qty)
{
float totalValue = 0.00F;
using (APM context = new APM())
{
var stud = (from s in context.T_OrderDetails
where s.ID == id
select s).FirstOrDefault();
stud.IsPreviewRequired = preview;
context.SaveChanges();
List<Cart> lstcarts = (List<Cart>)Session["Cart"];
if (Session["Cart"] != null)
{
var totalvalue = lstcarts.Where(x=>x.ID == id).Select(x => x.Amount).FirstOrDefault();
var quantity = lstcarts.Where(x => x.ID == id).Select(x => x.Quantity).FirstOrDefault();
var total = totalvalue / quantity;
totalValue = Qty * total;
lstcarts.Where(x => x.ID == id).ToList().ForEach(s => { s.Preview = preview; s.Amount = totalValue; s.Quantity = Qty; });
Session["Cart"] = lstcarts;
}
}
return Json(new { success = true, Preview = preview, Amount = totalValue });
}
此处Amount将返回一个浮点值。但在Ajax成功时,它收到:
Object { success=true, Preview=0, Amount=100 } //eg:100 instead of 100.0
然后在ajax成功进行实际计算:
$('.eachitem').on('click', '#updateCart', function (e) {
e.preventDefault();
var tis = $(this);
var itemid = $(this).data('assigned-id');
var val = $(this).closest('tr').find('.qty').val();
var chek = $(this).closest('tr').find('#preview:checked').length > 0;
var prev = 0;
**var amt = ParseFloat($(this).closest('tr').find('.amont').text()).toFixed(2);**
console.log(amt);
**var totalb = parseFloat($('.amountclass').text()).toFixed(2);**
console.log(totalb);
if (chek == true) {
prev = 1;
}
//var val = $(this).closest('#qtyid').find('#qty').val();
// var atLeastOneIsChecked = $('#preview:checked').length > 0;
$.ajax({
type: "POST",
url: base_url + '/AddtoCart/udateCart',
// contentType: "application/json; charset=utf-8",
data: { id: itemid, preview: prev,Qty:val },
dataType: 'json', encode: true,
async: false,
cache: false,
success: function (data, status, jqXHR) {
console.log(data);
$('.amountclass').remove();
// $(tis).closest('tr').find('.amont').remove();
$(tis).closest('tr').find('.amont').html(data["Amount"]);
var total = ((data["Amount"] + totalb) - amt);
//console.log(data["Amount"] + totalb);
console.log((data["Amount"]).toFixed(2));
var newspan = $('<span class="amont">').text(data["Amount"]);
$('<span class="amountclass">').text(total).appendTo('.total b');
},
error: function (jqXHR, textStatus, errorThrown) {
console.log(jqXHR);
if (typeof (console) != 'undefined') {
alert("oooppss");
}
else { alert("something went wrong"); }
}
});
});
最后输出不正确,它将变为如下:
答案 0 :(得分:0)
问题在于Date maxDate = list.stream().map(yourInstance -> yourInstance.date).max(Date::compareTo).get();
Date minDate = list.stream().map(yourInstance -> yourInstance.date).min(Date::compareTo).get();
您可以看到大写ParseFloat
,它应该是小写的P
,因为该方法是p
:
parseFloat()
答案 1 :(得分:0)
您正在连接字符串而不是数学计算
<svg width="600" height="311">
<defs>
<linearGradient id="fadeGrad" y2="1" x2="0">
<stop offset="0" stop-color="white" stop-opacity="0"/>
<stop offset=".7" stop-color="white" stop-opacity="1"/>
</linearGradient>
<mask id="masking" maskUnits="objectBoundingBox" maskContentUnits="objectBoundingBox">
<rect width="1" height="1" fill="url(#fadeGrad)"/>
</mask>
</defs>
<image xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://memesvault.com/wp-content/uploads/Doge-Meme-08.jpg" width="600" height="311" mask="url(#masking)"></image>
</svg>
答案 2 :(得分:0)
如果您正在使用货币价值,JavaScript就是您的敌人。
解决此问题的库很少,其中一个是BigNumber。 我有计算数百个发票详细信息的问题,有时只有少数几个,所以我添加了这个库以确保我的计算总是正确的。该库基于Java的BigDecimal。
添加示例:
0.1 + 0.2 // 0.30000000000000004
x = new BigNumber(0.1)
y = x.plus(0.2) // '0.3'
BigNumber(0.7).plus(x).plus(y) // '1'
x.plus('0.1', 8) // '0.225'
您的解决方案示例:
var amt = new BigNumber($(this).closest('tr').find('.amont').text());
var totalb = new BigNumber($('.amountclass').text());
var receivedAmt = new BigNumber(data["Amount"]);
var total = receivedAmt.plus(totalb).minus(amt);