PHP在JS confirm()boolean中无法正常工作

时间:2015-05-05 15:18:40

标签: javascript php

我有一个简单的清单表单,其中包含许多输入字段和计数器来检查它们。表单只包含几个文本字段和一些单选按钮,其值设置为conforms或notConforms:

  • 错误计数器($ errCounter)=计算非法输入格式和缺少字段等错误
  • 非一致性计数器($ notConforms)=检查是否/有多少输入字段设置为notConforms。 我正在尝试提醒用户并确认是否有任何输入设置为notConforms。

我的代码结果有两个问题:

  1. 它将两个条目(重复)放入数据库
  2. 数据库更新后,它不会将用户标题到指示的页面(inspectionbatch.php)
  3. 以下是什么问题?

    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;
        }
    
    }
    

    我还尝试在更新数据库的语法之后立即将header()函数放在updateDatabase()中。数据库已更新,但header()无效......

1 个答案:

答案 0 :(得分:1)

此代码不起作用,因为PHP(服务器端技术)在 javascript,客户端完成 >技术,甚至开始。所有PHP代码都将在您的Web服务器上执行,并且响应将被发送到客户端,然后所有javascript将在Web浏览器中运行。

如果你想混合2,你必须想象完全渲染的动态结果将如何看待网页浏览器。

此外,如果已经将任何字节写入HTTP正文,则无法调用header()函数。来自docs

  

请记住,在发送任何实际输出之前,必须通过普通HTML标记,文件中的空行或PHP来调用header()。