Javascript isset()对于动态窗体工作不正常

Javascript isset()对于动态窗体工作不正常,javascript,php,html,css,Javascript,Php,Html,Css,我有一个食堂菜单和购物车系统的代码。在用户从菜单中选择项目并单击“购买”按钮后,他们会得到一个排序的订单摘要,该摘要被动态编码为一个表单,订单按钮的作用类似于提交按钮。当我在php文档中使用isset()告诉它单击订单后要做什么时,即使表单没有出现,它也会返回true,并且没有要单击的提交按钮 <?php if(isset($_POST['ORDER'])){ echo "Hi"; } ?

我有一个食堂菜单和购物车系统的代码。在用户从菜单中选择项目并单击“购买”按钮后,他们会得到一个排序的订单摘要,该摘要被动态编码为一个表单,订单按钮的作用类似于提交按钮。当我在php文档中使用isset()告诉它单击订单后要做什么时,即使表单没有出现,它也会返回true,并且没有要单击的提交按钮

<?php
            if(isset($_POST['ORDER'])){
                echo "Hi";
            }
 ?>

即使用户还没有购买任何东西,订单摘要或名为“订单”的订单按钮也还没有出现,这也会让我感到“嗨”。 下面是我的Javascript代码,用于动态地将购物车更改为订单摘要并返回

function array(){
    title=document.getElementsByClassName("cafe")[1];
    alternate_title=`<br>
    <center><h1>Order Summary</h1></center>
    <br>`
    title.innerHTML=alternate_title;
    name=document.getElementsByClassName("cus_name")[0].textContent;
    console.log(name);
    order=[];
    var cartRows=document.getElementsByClassName('cart-items')
    for(var i=0;i<cartRows.length;i++){
        var cartRow=cartRows[i];
        var nameElement=cartRow.getElementsByClassName("item-name")[0];
        var name=nameElement.textContent;
        var quantityElement=cartRow.getElementsByClassName("quantity")[0];
        var quantity=parseFloat(quantityElement.value);
        item=[name,quantity];
        order.push(item);
    }
    var contents=`<form method="post"><div class="centered">`
    for(var i=0;i<order.length;i++){
        contents=contents+`<div class="cart-items" style="display: flex;">
        <div style="width:2em;">${i+1}.</div>
        <div><input type="text" value="${order[i][0]}" name="pdt_name[]"></div>
        <div><input type="number" value="${order[i][1]}" name="pdt_qty[]"></div>
        <div></div>
    </div><br>`;
    }
    contents=contents+`<br><center><input type="submit" name="ORDER" class="a" value="Order"></center></div></form>`;
    var half=document.getElementsByClassName("bill")[0];
    half.innerHTML=contents;
    
    document.getElementsByClassName("e")[0].addEventListener("click", goBack) ;
    function goBack(){
        title=document.getElementsByClassName("cafe")[1];
        alternate_title=`<br>
        <center><h1>Cart</h1></center>
        <br>`
        title.innerHTML=alternate_title;
        contents=`<div class="bg">
                
        <div class="all-items">
    
        </div>
    
        <hr>
    </div>
    <div class="eh"><h2><center>Total: <span class="total">Rs. 0</span></center></h2></div>
    <br>
    <center><input type="submit" value="Purchase" class="c"></center>
    </div>`
    var half=document.getElementsByClassName("bill")[0];
    half.innerHTML=contents;
    } 
}
函数数组(){
title=document.getElementsByClassName(“cafe”)[1];
备选标题=`
订单摘要
` title.innerHTML=备用标题; name=document.getElementsByClassName(“cus_name”)[0].textContent; console.log(名称); 订单=[]; var cartRows=document.getElementsByClassName('cart-items')
对于(var i=0;i编辑:这有更简单的解决方案

$PageWasRefresh=isset($_服务器['HTTP_缓存控制'])和&$_服务器['HTTP_缓存控制']=='max age=0';
如果($PageWasRefresh){
//因为页面已刷新,所以执行某些操作;
}否则{
//什么也不做;
}

如果要阻止刷新后执行的相同post数据,可以在表单上使用令牌。
不是最佳解决方案,但它确实有效


Hi!欢迎使用Stackoverflow。很难用假设的代码帮助您。请通读本页。将“Hi”替换为
var\u dump($\u POST);
。让我们看看您的数组(3){[“pdt\u name”]=>array(2){[0]=>string(5)“Latte”[1]=>string(7)“Macaron”}[“pdt\u数量”=>array(2){[0]=>string(1]=>string(1)“1”}[“ORDER”]=>string(5)“ORDER”}类似于这样的内容您是在加载新页面,还是碰巧重新加载了已发布的页面?它可以减少您粘贴到问题中的不必要代码的数量,从而帮助其他人。下面是它的说明:“注意:未定义的索引:第167行表单上C:\xampp\htdocs\食堂自动化系统-Copy\cart.php中的令牌已过期!”当我再次订购时,它不会更改。未定义的索引:令牌发生的原因是令牌未按请求发送,它应该在表单上输入名为令牌的令牌。如果令牌未更改,您可以移动
regeneraeToken()
if(isset($\u POST[“submit”])之前打开
关闭标记现在它只给我“表单已过期”。它还打印了“>订单摘要附近…这可能是因为我是在Javascript代码中执行此操作的吗?