我正在Django网站上工作,我需要在该网站上显示公司的某些服务,并且用户可以从页面上提供的单选按钮中选择服务的类型。该不同类型服务的价格正在从数据库中获取。一旦用户为任何类型的服务选择单选按钮,该服务的价格就会使用javascript复制到HTML标签,并且通过javascript计算所选服务总数的总和,并显示到称为total的不同标签上。现在,我要做的是,单击按钮后,我需要将用户选择和应付款总额存储到视图中的会话中。我以为可以通过使用JavaScript的ajax调用来做到这一点,但是如果用户更改/更改所有正在客户端计算的标签的值,与使用ajax调用相比,使用inspect元素功能将发送修改后的数据,因此这似乎是不安全的方法。所以任何人都可以指导我如何解决这个问题。
以下是我的tmeplate的代码:
<table class="LeftOffers">
<tr><th style="width:450px;">Packages</th><th>Small</th><th>Medium</th><th>Large</th></tr>
{%for package in packages%}
<tr><td><label id="package{{forloop.counter}}">{{package.PackageName}}</label><br>{{package.PackageDesc}}</td>
<td> <label><input name="package{{forloop.counter}}" id="small" value="{{package.SmallPrice}}" onchange="updateTotal(name)" type="radio">Rs {{package.SmallPrice}}</label></td>
<td> <label><input name="package{{forloop.counter}}" id="med" value="{{package.MedPrice}}" onchange="updateTotal(name)" type="radio">Rs {{package.MedPrice}}</label></td>
<td> <label><input name="package{{forloop.counter}}" id="large" value="{{package.LargePrice}}" onchange="updateTotal(name)" type="radio">Rs {{package.LargePrice}}</label></td>
</tr>
{%endfor%}
</table>
这里的服务是包,小,中和大是包的不同类型。
以下是用于显示某些标签上所选商品的价格并计算应付总金额的Javascript:
function updateTotal(names) {
pkgname = document.getElementById(names).innerHTML;
rowlbl = "row_"+names;
namelbl = "label_"+names;
prclbl = "optionsPrice_"+names;
btnid = "button_"+names;
document.getElementById(rowlbl).style.display='inline';
document.getElementById(btnid).style.display='inline';
document.getElementById(namelbl).innerHTML = pkgname;
document.getElementById(prclbl).innerHTML = "Rs "+ $("input[name="+names+"]:checked").val();
totalPrice=0;
{% for package in packages %}
lblname = "optionsPrice_package{{forloop.counter}}";
lblprc = document.getElementById(lblname).innerHTML;
if (lblprc != ""){
lblprc = lblprc.replace("Rs ","");
} else{
lblprc = "0";
}
totalPrice = totalPrice + parseInt(lblprc);
{% endfor %}
document.getElementById('totalPrice').innerHTML = "Rs " + totalPrice.toString();
}
如果我在这里缺少任何东西,请告诉我。
还要附上我的页面的屏幕截图,以供参考:
这是XY问题的经典例子; 您选择的解决方案将计算的数据存储在字段中,这会遇到安全问题,因此您询问如何避免这种情况,而不是意识到此解决方案是不合适的。
您根本不应该从表单中发送总计。随意在JS中进行计算以显示给用户,但不要发送它。您已经将所选软件包的详细信息发布到后端了;使用该数据而不是过帐的总计来计算实际应付金额。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句