在提交表格之前获取税价

时间:2015-06-19 04:44:12

标签: javascript php jquery ajax forms

我正在尝试在结帐页面中获取税值,以便在选择州字段后进行计算。我想这样做而不必提交表格,因为我想在处理订单之前在页面上显示税率。

我确信我必须使用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>

2 个答案:

答案 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在客户端执行所有操作,以立即计算税率。