Javascript PHP在JS confirm()布尔值中工作不正常

Javascript PHP在JS confirm()布尔值中工作不正常,javascript,php,Javascript,Php,我有一个简单的清单表单,其中有许多输入字段和计数器来检查它们。表单仅由几个文本字段和一些单选按钮组成,其值设置为符合或不符合: 错误计数器($errCounter)=统计错误,如非法输入格式和缺少字段 非一致性计数器($NotComplians)=检查是否/有多少输入字段设置为NotComplians。 我试图提醒用户,并得到他们的确认,如果任何输入设置为NotComplians 以下代码的结果存在两个问题: 它在数据库中创建两个条目(重复) 在数据库更新之后,它不会将用户标题到指定的页面(

我有一个简单的清单表单,其中有许多输入字段和计数器来检查它们。表单仅由几个文本字段和一些单选按钮组成,其值设置为符合或不符合:

  • 错误计数器($errCounter)=统计错误,如非法输入格式和缺少字段
  • 非一致性计数器($NotComplians)=检查是否/有多少输入字段设置为NotComplians。 我试图提醒用户,并得到他们的确认,如果任何输入设置为NotComplians
以下代码的结果存在两个问题:

  • 它在数据库中创建两个条目(重复)
  • 在数据库更新之后,它不会将用户标题到指定的页面(inspectionbatch.php)
  • 下面的问题是什么

    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        if($errCounter == 0){ // provided there are no errors found during form validation
            // warn user if there is a non-conformance
            if($notConforms !== 0){ ?>
                <script>
                    if(confirm("A not-conforms 'N/C' result has been recorded for one or more inspection criteria. If this is accurate, click OK to continue.")) {
                        <?php echo updateDatabase(); header("location: inspectionbatch.php");?>
    
                    } else {
                        <?php echo updateDatabase(); header("location: inspectionbatch.php");?>
                    }
                </script>
      <?php } else {
            updateDatabase(); header("location: inspectionbatch.php");
            }
    
        } else { // if errors are found during form validation, return how many errors were found
            echo "Error count: " . $errCounter;
        }
    
    }
    
    if($\u服务器[“请求\u方法”]=“发布”){
    如果($errCounter==0){//,则在表单验证期间未发现任何错误
    //如果存在不符合项,则警告用户
    如果($notconfirms!==0){?>
    如果(确认(“记录了一个或多个检验标准的不符合‘N/C’结果。如果这是准确的,请单击“确定”继续。”){
    }否则{
    }
    
    这段代码不起作用,因为服务器端技术PHP在客户端技术javascript开始之前就已经运行完成了。所有PHP代码都将在web服务器上执行,并向客户端发送响应,然后所有javascript都将在web浏览器中运行

    如果要混合使用这两种方法,则必须想象完全渲染的动态结果在web浏览器中的效果

    此外,如果已将任何字节写入HTTP正文,则无法调用该函数。从:

    记住,在发送任何实际输出之前,必须调用header(),可以是通过普通HTML标记、文件中的空行,也可以是通过PHP


    php在服务器上执行,javascript在客户机上执行。您试图做的是不可能的-js代码在php完全完成并退出/关闭后很久才会运行。除此之外,header()调用也没用。您不能使用header()将输出发送到客户端后,php是服务器端的。JS是客户端的。因此,一旦页面发送给用户,JS就不能使用php,这很神奇。@Marc B meet Marko B!我明白了。所以,在允许提交表单之前,只需从php中取出notConforms检查并在JS中运行它即可。。。