在提交表单之前获取要计算的税价
Getting tax price to calculate before submitting a form
我正在尝试在结帐页面中获取税值,以便在选择州字段后进行计算。我想在不必提交表格的情况下执行此操作,因为我想在处理订单之前在页面上显示税率。
我相信我将不得不在Ajax上做到这一点,而且我使用Ajax的次数非常有限。我知道您将 Ajax 的请求发送到 php 页面,然后 Ajax 提取您需要的字段。所以我需要拉的是,如果选择了俄亥俄州,我需要拉取 1.065 的值。如果拉取任何其他状态,我需要获取值 1。
我以这样的数组格式列出了状态变量,因为我将其用作状态下拉列表的选项。
$taxvalue['Ohio'] = "Ohio";
$taxvalue['Virginia'] = "Virginia";
等
然后我尝试了一个 if isset 语句,当选择俄亥俄州来拉取 $taxed_state 以获得 1.065 的值时。否则其他一切都是untaxed_state。
$taxed_state = 1.065;
$untaxed_state = 1;
if(isset($taxvalue['Ohio'])){
$taxed_state;
} else {
$untaxed_state;
}
这就是我尝试配置税率的方式,我知道一旦我可以在提交表格之前设置状态,税率就会起作用。
$base_price = 0;
foreach($_SESSION['shopping_cart'] as $id => $product) {
$product_id = $product['product_id'];
$base_price += $products[$product_id]['price'] * $product['quantity'];
$shipping_price += $products[$product_id]['shippingprice'] * $product['quantity'];
}
$tax_price += $base_price * $taxed_state;
$total_price += $base_price + $shipping_price + $tax_price;
}
我知道这是发送 Ajax 调用的一般方式......
$.ajax({
url: "tax.php",
data: {
action: ""
},
type: "POST",
dataType: "text"
}).fail(function(e, t, m) {
但是我不确定如何构建这个Ajax调用,以使它为我正在尝试做的事情工作。我该怎么做,所以我会得到一个选择州输入字段的税率。
我敢肯定我离这个还很远,但谁能给出一些见解并指出我正确的方向。
更新:
我正在输入更多代码,看看我做错了什么。
$taxvalue['Wisconsin'] = 1;
$taxvalue['Wyoming'] = 1;
$taxed_state = 1.065;
$untaxed_state = 1;
if(isset($taxvalue['Ohio'])){
$taxed_state;
} else {
$untaxed_state;
}
$base_price = 0;
foreach($_SESSION['shopping_cart'] as $id => $product) {
$product_id = $product['product_id'];
$base_price += $products[$product_id]['price'] * $product['quantity'];
$shipping_price += $products[$product_id]['shippingprice'] * $product['quantity'];
}
$tax_price += $base_price * $taxed_state;
$total_price += $base_price + $shipping_price + $tax_price;
}
?>
<div id="msgdiv" > </div>
<div class="ordersummarycontainer">
<span class="summarytitle"><p>Order Summary</p></span><br>
Items: <span class="floatright"><?php echo "$" . $base_price; ?></span>
<p>Shipping and handling: <span class="floatright"><?php echo "$" . $shipping_price; ?></span></p>
<p>Tax: <span class="floatright"><?php echo "$" . $tax_price - $base_price; ?></span></p>
在我的页面底部,我有 JS
<script>
$(document).ready(function() {
$(function() {
var taxed_price = 0;
$( "#taxvalue" ).change(function() {
if ($(this).val() == 'Ohio') {
tax = 1.065;
}
else {
tax = 1;
}
$('#taxed_price').val(base_total * taxed_state);
});
});
});
</script>
更新:>
我注释掉了 $taxed_state 和 untaxed_state,因为我已经有其中的值,所以我试图像你一样做。
$taxvalue['Wisconsin'] = 1;
$taxvalue['Wyoming'] = 1;
//$taxed_state = 1.065;
//$untaxed_state = 1;
if(isset($taxvalue['Ohio'])){
$taxed_state;
} else {
$untaxed_state;
}
$base_price = 0;
foreach($_SESSION['shopping_cart'] as $id => $product) {
$product_id = $product['product_id'];
$base_price += $products[$product_id]['price'] * $product['quantity'];
$shipping_price += $products[$product_id]['shippingprice'] * $product['quantity'];
}
$tax_price += $base_price * $taxed_state;
$total_price += $base_price + $shipping_price + $tax_price;
}
税收对应的区域。我没有得到任何东西显示的区域
<p>Tax: <span class="floatright"><?php echo "$" . $tax_price //- $base_price; ?></span></p>
状态下拉列表为...
<label for="state">State</label>
<select type="text" class="mediuminputbar preview" id="ShipTostate taxvalue" data-copy="#confirmstate" name="ShipTostate taxvalue" value="<?php echo escape($user->data()->state); ?>" required>
<option value=''>Select a State</option>
<?php
foreach($taxvalue as $key => $val) {
echo "<option value='$val'>$key</option>/n";
}
?>
</select>
.JS
$(document).ready(function() {
$(function() {
var taxed_state = 0;
var base_total = 0;
$( "#taxvalue" ).change(function() {
if ($(this).val() == 'Ohio') {
taxed_state = 1.065;
}
else {
taxed_state = 1;
}
$('#taxed_price').val(base_total * taxed_state);
});
});
});
在我看来,你甚至可能不需要做一个Ajax调用。如果你只有两种税率(俄亥俄州和非征税),那么为什么不通过javascript来完成呢?像这样:
$(function() {
var tax = 0;
$( "#state" ).change(function() {
if ($(this).val() == 'Ohio') {
tax = 1.065;
}
else {
tax = 1;
}
$('#total').val(total * tax);
});
});
您可以在下拉框的 onchange 事件上调用 ajax 函数。
其次,如果你在服务器端不需要任何东西(例如任何数据库查询),你甚至可能不需要ajax。如果税收值是静态的并且没有保存在数据库中,那么您可以通过javascript在客户端执行所有操作,以立即计算税率。
- 从Rally获取一个特定的标记,以便计算另一个字段中的值
- 如何在自定义指令中获取计算的属性
- 获取唯一值并使用javascript计算金额总和
- 从表单中获取用户输入执行计算(操作顺序)并输出回该表单
- 通过javascript/jquery从html表中获取值并进行计算
- 使用reactjs setState回调获取上一个输入值的计算值
- 正在获取客户端计算机上特定目录中的文件名
- 在 javascript 中逐个类获取元素并计算其中的元素数量
- 以点表示法计算字符串,以从视图中的对象获取相应的值
- 从HTML表单中获取计算得到的JavaScript数据,并将其作为新元素添加到相同的表单操作中以使用PHP保存
- 获取javascript计算字段时遇到问题
- 如何获取当前元素的计算样式
- 如何获取元素's”;指定的“;样式而不是计算样式
- 使用AngularJS从服务器获取计算结果
- 如何使用javascript或jQuery进行计算,从各种不同的元素中获取值
- 获取javascript以将计算输出到HTML
- 获取位置A的位置并计算其到位置B的距离
- 获取计算高度-Javascript-而不是jQuery
- 如何获取值形式输入为数字来计算gcd
- Knockout.js - 如何在计算的可观察量中获取可观察属性的值