php 使用单选按钮切换大小写和 ajax

php case switching using radio buttons and ajax

我正在尝试构建一个计算器,根据收入和生活 situation/dependants 等计算福利金。我的 php 文件包含每种情况的不同计算方法 'case'.我通过 HTML 表单中的 Ajax 将我的收入变量发布到 php 文件,并且还选中了单选按钮。

我遇到的问题是元素单独工作但不能一起工作。例如,点击一个单选按钮returns文本表明已经切换了案例,但是在提交收入时,它总是恢复到第一个案例(案例0)并给我一些未定义的变量错误,虽然它确实如此实际上计算。我已经进行了相当多的搜索,但我不确定我的下一步。任何帮助表示赞赏!

HTML

<!DOCTYPE html>
<html>
<head>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>

</head>
<body>

    <label>Please select from below which best reflects your situation</label><br />
<br />
    <input class="radio" type="radio" name="calculate" value="0">You are single, under 18 and living at home<br />
    <input class="radio" type="radio" name="calculate" value="1">You are single, over 18, living at home<br />
    <input class="radio" type="radio" name="calculate" value="2">You are single or in a couple, no children and living away from home<br />
    <input class="radio" type="radio" name="calculate" value="3">You are in a couple, with children<br />
    <input class="radio" type="radio" name="calculate" value="4">You are single, with children<br />
<br />
    <label>Enter a your fortnightly income: <input type="text" id="num"></label>
    <button type="button">Show result</button>
    <div id="result"></div>
</html>



<script>
$(document).ready(function(){
    $('input[type="radio"]').click(function(){
        var calculate = $(this).val();

        $.ajax({
            url:"austudy.php",
            method:"POST",
            data: {calculate:calculate},
            success:function(data){
                $("#result").html(data);
            }

        })

    })

})
</script>

<script>

    $(document).ready(function(){
        $("button").click(function(){
            // Get value from input element on the page
            var numValue = $("#num").val();

            // Send the input data to the server using get
            $.get("austudy.php", {number: numValue} , function(data){
                // Display the returned data in browser
                $("#result").html(data);
            });
        });
    });

    </script>

PHP

<?php

$income = ($_GET["number"]);
$maxpayment = 445.80;
$scenario = ($_POST["calculate"]);

switch ($scenario) {

    case 0:
    //single, under 18, living at home, max payment = 445.80

    if ($income < 437.00)
    {
        echo "case 0 selected";
        echo "You will receive max payment";
    }

    elseif ($income >= 864.84)
    {
        echo "case 0 selected";
        echo "Your payment is reduced to Zero";
    }

    else if ($income > 437.00 && $income < 445.51)
    {
        $payment = $maxpayment - (($maxpayment - $income) * 0.5);
        echo "case 0 selected";
        echo "your payment will be ";
        echo $payment;
    }

    else if ($income > 445.50 && $income < 524.00)
    {
        $payment = $maxpayment - (($income - $maxpayment) * 0.5);
        echo "case 0 selected";
        echo "your payment will be ";
        echo $payment;
    }

    else if ($income > 524.00 && $income <= 864.83)
    {
        $payment = $maxpayment - ((($income - $maxpayment) * 0.6) - 43.50);
        echo "case 0 selected";
        echo "your payment will be ";
        echo $payment;
    }

break;

    case 1:
    //single, over 18, living at home, max payment = 445.50
    if ($income < 437.00)
    {
        echo "case 1 selected";
        echo "You will receive max payment";
    }

    elseif ($income >= 864.84 )
    {
        echo "case 1 selected";
        echo "Your payment is reduced to Zero";
    }

    else if ($income > 437.00&& $income < 445.51)
    {
        $payment = $maxpayment - (($maxpayment - $income) * 0.5);

        echo "case 1 selected";
        echo "your payment will be ";
        echo $payment;
    }

    else if ($income > 445.50 && $income < 524.00)
    {
        $payment = $maxpayment - (($income - $maxpayment) * 0.5);
        echo "case 1 selected";
        echo "your payment will be ";
        echo $payment;
    }

    else if ($income > 524.00 && $income <= 948.49)
    {
        $payment = $maxpayment - ((($income - $maxpayment) * 0.6) - 43.50);
        echo "case 1 selected";
            echo "your payment will be ";
        echo $payment;
    }

break;

    case 2:
    //single or in a couple, no children, living away from home, max payment = 445.50

    if ($income < 437.00)
    {
        echo "case 2 selected";
        echo "You will receive max payment";
    }

    elseif ($income >= 1206.17)
    {
        echo "case 2 selected";
        echo "Your payment is reduced to Zero";
    }

    else if ($income > 437.00 && $income < 445.51)
    {
        $payment = $maxpayment - (($maxpayment - $income) * 0.5);
        echo "case 2 selected";
        echo "your payment will be ";
        echo $payment;
    }

    else if ($income > 445.50 && $income < 524.00)
    {
        $payment = $maxpayment - (($income - $maxpayment) * 0.5);
        echo "case 2 selected";
        echo "your payment will be ";
        echo $payment;
    }

    else if ($income > 524.00 && $income <= 1206.16)
    {
        $payment = $maxpayment - ((($income - $maxpayment) * 0.6) - 43.50);
        echo "case 2 selected";
        echo "your payment will be ";
        echo $payment;
    }

break;

    case 3:
    //in a couple, with children, max payment 489.60

    if ($income < 437.00)
    {
        echo "case 3 selected";
        echo "You will receive max payment";
    }

    elseif ($income >= 1280.34)
    {
        echo "case 3 selected";
        echo "Your payment is reduced to Zero";
    }

    else if ($income > 437.00 && $income < 445.51)
    {
        $payment = $maxpayment - (($maxpayment - $income) * 0.5);
        echo "case 3 selected";
        echo "your payment will be ";
        echo $payment;
    }

    else if ($income > 445.50 && $income < 524.00)
    {
        $payment = $maxpayment - (($income - $maxpayment) * 0.5);
        echo "case 3 selected";
        echo "your payment will be ";
        echo $payment;
    }

    else if ($income > 524.00 && $income <= 1280.33)
    {
        $payment = $maxpayment - ((($income - $maxpayment) * 0.6) - 43.50);
        echo "case 3 selected";
        echo "your payment will be ";
        echo $payment;
    }

break;

    case 4:
    //single, with children, max payment 584.20

        if ($income < 437.00)
    {
        echo "case 4 selected";
        echo "You will receive max payment";
    }

    elseif ($income >= 1440.50)
    {
        echo "case 4 selected";
        echo "Your payment is reduced to Zero";
    }

    else if ($income > 437.00 && $income < 445.51)
    {
        $payment = $maxpayment - (($maxpayment - $income) * 0.5);
        echo "case 4 selected";
        echo "your payment will be ";
        echo $payment;
    }

    else if ($income > 445.50 && $income < 524.00)
    {
        $payment = $maxpayment - (($income - $maxpayment) * 0.5);
        echo "case 4 selected";
        echo "your payment will be ";
        echo $payment;
    }

    else if ($income > 524.00 && $income <= 1440.49)
    {
        $payment = $maxpayment - ((($income - $maxpayment) * 0.6) - 43.50);
        echo "case 4 selected";
        echo "your payment will be ";
        echo $payment;
    }

break;

}

?>

您需要同时发送这两个值。当您发送收入时,您的 $scenario 变量没有被设置,因为没有发送 'calculate' 参数。所以 $scenario 可能以空值结束。在 PHP 中,false 和 null 可以计算为 0。