Php 减法变成加法?
我在一个非常简单的计算中遇到了一个奇怪的问题。单击Php 减法变成加法?,php,jquery,subtraction,Php,Jquery,Subtraction,我在一个非常简单的计算中遇到了一个奇怪的问题。单击addDomain复选框时,页面将向php后端发出ajax请求,新的小计根据传递的参数确定。第一次选中复选框时,一切正常(即返回新的总和)。如果随后取消选中该复选框,则再次激发请求,但返回某个地方的加法的和,而不是减法的乘积 这是我正在使用的代码。我要做的应该很简单 case 'domainprices': $sub = request_var('s', 0.00); $checked = request_var('c', tru
addDomain
复选框时,页面将向php后端发出ajax请求,新的小计根据传递的参数确定。第一次选中复选框时,一切正常(即返回新的总和)。如果随后取消选中该复选框,则再次激发请求,但返回某个地方的加法的和,而不是减法的乘积
这是我正在使用的代码。我要做的应该很简单
case 'domainprices':
$sub = request_var('s', 0.00);
$checked = request_var('c', true);
$price = (float) 10.99;
if($checked){
$sub = $sub + $price;
}else{
$sub = $sub - $price;
}
$res['res'] = $sub;
echo json_encode($res);
break;
case 'hosting':
$id = request_var('id', '');
switch($id){
case 'economy':
$res['body'] = '<div>
<select name="duration">
<option value="3">3 years @ $2.99/Mo</option>
<option value="2">2 years @ $3.99/Mo</option>
<option value="1">1 year @ $4.99/Mo</option>
<option value="0">1 month @ $5.99/Mo</option>
</select><br />
Add Domain Name: <input type="checkbox" name="addDomain" /><br />
Subtotal: $<span id="subtotal">107.64</span>
</div>
<script>
$("select[name=duration]").change(function(){
var duration = $(this).val();
var checked;
if($("input[name=addDomain]").is(":checked")){
checked = true;
}else{
checked = false;
}
Funcs.ajaxCall("services", "mode=hostingprices&d="+duration, function(data){
$("#subtotal").html(data.result);
});
});
$("input[name=addDomain]").mousedown(function(){
var subtotal = $("#subtotal").html();
var checked;
if($(this).is(":checked")){
checked = false;
}else{
checked = true;
}
Funcs.ajaxCall("services", "mode=domainprices&s="+subtotal+"&c="+checked, function(data){
$("#subtotal").html(data.res);
});
});
</script>';
$res['name'] = "Economy Hosting";
echo json_encode($res);
break;
}
break;
案例“域名价格”:
$sub=请求变量('s',0.00);
$checked=请求变量('c',true);
$price=(浮动)10.99;
如果($checked){
$sub=$sub+$price;
}否则{
$sub=$sub-$price;
}
$res['res']=$sub;
echo json_编码($res);
打破
“托管”案例:
$id=请求变量('id','');
交换机($id){
“经济”一案:
$res['body']='
3年@2.99美元/月
2年@3.99美元/月
1年@4.99美元/月
1个月@5.99美元/月
添加域名:
小计:107.64美元
$(“选择[name=duration]”)。更改(函数(){
var duration=$(this.val();
var检查;
如果($(“输入[name=addDomain]”)是(“:选中”)){
选中=正确;
}否则{
选中=错误;
}
Funcs.ajaxCall(“服务”,“模式=主机价格和d=”+持续时间,函数(数据){
$(“#小计”).html(data.result);
});
});
$(“输入[name=addDomain]”)。鼠标向下(函数(){
var subtotal=$(“#subtotal”).html();
var检查;
如果($(this).is(“:checked”)){
选中=错误;
}否则{
选中=正确;
}
Funcs.ajaxCall(“服务”,“模式=域价格&s=“+小计+”&c=“+选中,函数(数据){
$(“#小计”).html(data.res);
});
});
';
$res['name']=“经济型主机”;
echo json_编码($res);
打破
}
打破
检查,如果$checked
是您期望的,如果$price>0
。如果未选中复选框,则不会提交,您知道吗?要更改此行为,请在复选框前插入一个隐藏字段,并使用标准值,如0@KingCrunch-根据firebug的说法,选中的变量在离开页面时包含正确的信息,但是当echo
ing捕获它的变量时,即使它不应该显示为true,也会显示为true$price
还包含应包含的值。可能改为将checked作为字符串发送,因此设置checked='true';和checked='false';可能是当你试图把它放在一根绳子里的时候,真的不是很好。这正是我最后不得不做的。演员阵容不知怎么被破坏了。