如何在不重新加载页面的情况下更新包含页面中的php变量

时间:2019-03-04 13:06:06

标签: php jquery ajax razorpay

我想为RazorPay购买应用促销代码,如果有人应用了有效代码,则向他们显示折扣价。为此,我必须更新我的php变量值。我尝试了所有可能的解决方案,但没有任何效果。我可以根据Ajax响应更改html值,但是如何更新php值?

这是我的php页面-buy.php

<?php $amount = 2500; ?>

<p>Get 1 Year for<br> &#8377; <span id="price"><?php echo $amount; ?</span></p>

<form id="promoForm" action="pay.php" method="POST">
    <input type="text" name="code" placeholder="Have a Promo Code?" required />
    <button id="applybtn" type="submit">Apply</button>
</form>

<p class="errormsg"></p>

<?php include"pay.php"; ?>

因此,如果有人应用促销代码,我将通过像这样的ajax调用从数据库中检查代码-

<script>    
$("#promoForm").submit(function(event){

    event.preventDefault(); //prevent default action 
    var post_url = $(this).attr("action"); //get form action url
    var request_method = $(this).attr("method"); //get form GET/POST method
    var formdata = $(this).serialize(); //Encode form elements for submission

    $.ajax({
        url : post_url,
        type: request_method,
        data : formdata,
        success: function(response){
            if(response.includes("codeApplied")){

            $('#applybtn').prop('disabled', true);
            ogprice = $("#price").text();  // Get price value

            //calculate percentage
            function fpercent(quantity, percent)
            {
                return quantity * percent / 100;
            }
            discount = fpercent(ogprice, 5);
            offerPrice = ogprice - discount.toFixed(2);

            $("#price").text(offerPrice);  //Set discounted price value

            response = 'Your Code Applied Successfully!';
            $('.errormsg').html('<span style="color:green;">'+response+'</span>');

          }else{
                response = 'This code does not exist';
                $('.errormsg').html('<span style="color:red;">'+response+'</span>');
          }
        }

    });
});

</script>

这是我的pay.php,用于检查db中的代码,如果代码成功应用,则在单击“购买”按钮(购买按钮为razorpay-payment-button)上使用折扣金额-

<?php

include('dbconnect.php');

$codeApplied = 'false';
if($_SERVER["REQUEST_METHOD"] == "POST"){
$code = $_POST['code'];

// Check if code exist
$exist = mysqli_query($con, "SELECT `code` FROM `promocodes` WHERE `code` = '".$code."'");
$cnt = mysqli_num_rows($exist);

if($cnt > 0){
    $msg = 'codeApplied'; //'Your Code Applied Successfully!';
    $codeApplied = 'true';
}else{
    $msg = 'failed'; //'This code does not exist';
}

echo $msg;
echo $codeApplied;
}

if($codeApplied == 'true'){
    $amt = 2375;    
}else{$amt = 2500;}

echo $amt;
?>

到目前为止,我已经获得了所有预期的结果。金额的HTML值也根据折扣进行了更改。但是php变量$amount仍具有原始值(2500)。

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

您需要知道php是一种服务器语言, 当您请求页面时,服务器将运行此php并将其转换为html 因此,解析后无法通过html和javascript更改php变量 您必须在服务器端进行变通,以查看当前用户是否应用了促销代码是否可以在会话中添加促销代码,然后在用户提交时再次执行计算,因为变量$ amount不会更改