我正在尝试在结帐页面中获取税值,以便在选择州字段后进行计算。我想这样做而不必提交表格,因为我想在处理订单之前在页面上显示税率。
我确信我必须使用Ajax执行此操作,并且我使用Ajax的次数非常有限。我知道你用Ajax将请求发送到php页面,然后Ajax拉出你需要的字段。所以我需要提取的是,如果选择俄亥俄州,我需要提取1.065的值。如果拉出任何其他状态,我需要获得值1。
我有以这种数组格式列出的状态变量,因为我使用它作为我的状态下拉列表的选项..
sec-type='node-refs'
等
然后我尝试了一个if isset语句,用于选择俄亥俄州拉$ taxed_state以获得1.065的值。否则其他一切都是一个untaxed_state。
$taxvalue['Ohio'] = "Ohio";
$taxvalue['Virginia'] = "Virginia";
这就是我试图配置税率的方法,一旦我可以在提交表单之前设置状态,我知道该税率将会有效。
$taxed_state = 1.065;
$untaxed_state = 1;
if(isset($taxvalue['Ohio'])){
$taxed_state;
} else {
$untaxed_state;
}
我知道这是发送Ajax调用的一般方法......
$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) {
在我的页面底部,我有JS
$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>
更新产品:&gt;
我注释掉了$ taxed_state和untaxed_state,因为我已经有了值,所以我试图像你一样做。
<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>
征税的地区。我没有得到任何东西出现的地方
$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>
JS
<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>
答案 0 :(得分:0)
在我看来,您甚至可能不需要进行Ajax调用。如果你只有两个税率(俄亥俄州和非税收),那么为什么不通过javascript全部完成呢?像这样:
$(function() {
var tax = 0;
$( "#state" ).change(function() {
if ($(this).val() == 'Ohio') {
tax = 1.065;
}
else {
tax = 1;
}
$('#total').val(total * tax);
});
});
答案 1 :(得分:0)
您可以在下拉框的onchange事件上调用ajax函数。
其次,如果您在服务器端不需要任何东西(例如任何数据库查询),您甚至可能不需要ajax。如果税值是静态的并且未保存在数据库中,那么您可以通过javascript在客户端执行所有操作,以立即计算税率。