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。
我正在尝试构建一个计算器,根据收入和生活 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。