Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 减法变成加法?_Php_Jquery_Subtraction - Fatal编程技术网

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';可能是当你试图把它放在一根绳子里的时候,真的不是很好。这正是我最后不得不做的。演员阵容不知怎么被破坏了。