在提交表单之前获取要计算的税价

Getting tax price to calculate before submitting a form

本文关键字:计算 获取 提交 表单      更新时间:2023-09-26

我正在尝试在结帐页面中获取税值,以便在选择州字段后进行计算。我想在不必提交表格的情况下执行此操作,因为我想在处理订单之前在页面上显示税率。

我相信我将不得不在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在客户端执行所有操作,以立即计算税率。